機能
データ列値関数は、文字列型の値となる関数です。
関数 | 機能 |
---|---|
文字部分列関数は、SUBSTRINGを指定して、文字値式の開始位置から、文字列長分の部分列を求めます。 | |
大文字小文字変換は、UPPERまたはLOWERを指定して、文字を大文字または小文字に変換します。 | |
TRIM関数は、指定された文字を取り除きます。 | |
LPAD式は、文字値式の左側に、全体の文字列数が結果長になるまで、埋込み文字列をサイクリックに埋め込んで、結果長数分の文字列を返します。 | |
RPAD式は、文字値式の右側に、全体の文字列数が結果長になるまで、埋込み文字列をサイクリックに埋め込んで、結果長数分の文字列を返します。 | |
REPLACE式はREPLACE元の文字列中に含まれる検索文字列のすべてを置換文字列に置き換えた結果を返却します。 | |
REPLICATE式は、指定された結果文字数の範囲内で、指定された回数だけ、値式を繰り返します。 | |
REVERSE式は、値式を逆に並び替えたものを返します。 | |
日時値式のデータを指定された書式に従って文字型に変換します。 |
記述形式
参照項番
文字値式 → “2.10.2 データ列値式”
日付書式 → “2.5.4 日時値関数”
一般規則
文字部分列関数は、SUBSTRINGを指定して、文字値式の開始位置から文字列長分の部分列を求めます。
開始位置と文字列長はそれぞれ文字数を指定します。
文字列長が省略された場合は、文字値式の最後の文字までの部分列を求めます。
開始位置と文字列長の和が文字値式の長さより大きければ、文字部分列関数の結果は開始位置から文字値式の最後の文字までの部分列を求めます。
開始位置が文字値式の長さより大きければ、文字部分列関数の結果は長さ0の文字列になります。
開始位置に負の値が指定された場合、負の位置からの部分列が返却されます。
文字列長が負の値ならば、エラーになります。
開始位置または文字列長がNULLならば、エラーになります。
文字部分列関数の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。SQL記述子域のTYPEにINTEGERの情報が設定されます。SQL記述子域のLENGTHにINTEGERのデータ長が設定されます。
オペランド | DESCRIBE情報 |
---|---|
文字値式 | エラー |
開始位置 | INTEGER |
文字列長 | INTEGER |
文字値式がNULLならば、結果もNULLになります。文字部分列関数の結果のデータ型を以下に示します。
値式のデータ型 | 結果のデータ型 |
---|---|
CHAR(n) | VARCHAR(MIN(Nvc,n)) |
VARCHAR(n) | VARCHAR(n) |
NCHAR(n) | NCHAR VARYING(MIN(Nvn,n)) |
NCHAR VARYING(n) | NCHAR VARYING(n) |
その他 | エラー |
Nvc: VARCHARのデータの最大長
Nvn: NCHAR VARYINGのデータの最大長
文字部分列関数
SUBSTRING('Symfoware' FROM 6 FOR 3) →結果は 'war'になります。 SUBSTRING('Symfoware' FROM 6) →結果は 'ware'になります。 SUBSTRING('Symfoware' FROM 10) →結果は ''になります。 SUBSTRING('Symfoware' FROM 6 FOR -1) →結果は エラーになります。 SUBSTRING('Symfoware' FROM -1 FOR 5) →結果は 'Sym'になります。
大文字小文字変換は、指定された文字を大文字または小文字に変換します。
大文字小文字変換には、UPPERとLOWERがあります。
大文字小文字変換に動的パラメタ指定が指定された場合は、エラーになります。
文字値式がNULLならば、結果もNULLになります。
大文字小文字変換の結果のデータ型を以下に示します。
値式のデータ型 | 結果のデータ型 |
---|---|
CHAR(n) | CHAR(n) |
VARCHAR(n) | VARCHAR(n) |
その他 | エラー |
大文字小文字変換
UPPER('Symfoware') →結果は 'SYMFOWARE'になります。 LOWER('Symfoware') →結果は 'symfoware'になります。
TRIM関数は、指定された文字を取り除きます。
TRIM指定が省略された場合、BOTHが指定されたものとみなされます。
TRIM文字の長さが1でなければ、エラーになります。
LEADINGが指定されると、TRIM関数の結果は、TRIM元の前端からTRIM文字を取り除いた値になります。同一文字が前端にある場合は、すべて取られます。
TRAILINGが指定されると、TRIM関数の結果は、TRIM元の後端からTRIM文字を取り除いた値になります。同一文字が後端にある場合は、すべて取られます。
BOTHが指定されると、TRIM関数の結果は、TRIM元の両端からTRIM文字を取り除いた値になります。同一文字が両端にある場合は、すべて取られます。
TRIM関数に動的パラメタ指定が指定された場合は、エラーになります。
TRIM文字またはTRIM元がNULLならば、結果もNULLになります。
TRIM関数の結果のデータ型を以下に示します。
TRIM元のデータ型 | 結果のデータ型 |
---|---|
CHAR(n) | VARCHAR(MIN(Nvc,n)) |
VARCHAR(n) | VARCHAR(n) |
NCHAR(n) | NCHAR VARYING(MIN(Nvn,n)) |
NCHAR VARYING(n) | NCHAR VARYING(n) |
その他 | エラー |
Nvc: VARCHARのデータの最大長
Nvn: NCHAR VARYINGのデータの最大長
TRIM関数
TRIM(' rdb ') →結果は 'rdb'になります。 TRIM(N' RDB ') →結果はN'RDB'になります。 TRIM('a' FROM 'aaaBBaBBaaa') →結果は'BBaBB'になります。 TRIM(BOTH 'a' FROM 'aaaBBaBBaaa') →結果は'BBaBB'になります。 TRIM(LEADING '0' FROM '00011232100') →結果は'11232100'になります。 TRIM(TRAILING '0' FROM '00011232100') →結果は'000112321'になります。
LPAD式は、文字値式の左側に、全体の文字列数が結果長になるまで、埋込み文字列をサイクリックに埋め込んで、結果長数分の文字列を返します。
結果長は定数で指定します。整数でなければなりません。指定できる値は、文字値式のデータ型の最大長以下でなけばなりません。文字値式のデータ型がCHAR、VARCHARの場合はバイト長で指定します。NCHAR、NCHAR VARYINGの場合は文字数で指定します。結果長は、INTEGER型に変換されます。
結果長に0または負数を指定するとエラーとなります。
LPAD式に動的パラメタ指定が指定された場合は、エラーになります。
埋込み文字列を省略すると空白を指定したものと見なします。
文字値式がNULLあるいは長さ0の文字列である場合は、LPAD式の結果はNULLとなります。
埋込み文字列がNULLあるいは長さ0の文字列である場合は、LPAD式の結果はNULLとなります。
文字値式の文字列数が結果長より大きい場合、文字値式の先頭から結果長数分の文字列を返却します。
文字値式のデータ型がCHAR、VARCHARのとき、1文字が2バイト以上で構成される文字を埋込み文字列に指定すると、結果長の指定によっては、文字の埋め込み後に空きができることがあります。そのような場合は、文字の代わりに1バイトの空白が埋め込まれます。
LPAD式の引数の組み合わせおよび結果のデータ型は次のようになります。
文字値式のデータ型 | 埋込み文字列のデータ型 | 結果長 | LPAD式の結果のデータ型 |
---|---|---|---|
CHAR | CHAR または | n: バイト数 | CHAR(n) |
VARCHAR | CHAR または | n: バイト数 | VARCHAR(n) |
NCHAR | NCHAR または | n: 文字数 | NCHAR(n) |
NCHAR VARYING | NCHAR または | n: 文字数 | NCHARVARYING(n) |
LPAD式
LPAD('ABCDE',10,'xyz') →結果は 'xyzxyABCDE'になります。 LPAD(N'ABC',5,N'xyz') →結果は N'xyABC'になります。 LPAD('ABC',5) →結果は ' ABC'になります。 LPAD('ABCDEFG',5,'xyz') →結果は 'ABCDE'になります。 LPAD(N'ABC',5,'xyz') →結果は エラーになります。 文字値式と埋込み文字とのデータ型の組合せが誤っています。 LPAD('ABC',9,'X') →結果は ' XABC'になります。 Xの前に半角ブランクが設定されます。
RPAD式は、文字値式の右側に、全体の文字列数が結果長になるまで、埋込み文字列をサイクリックに埋め込んで、結果長数分の文字列を返します。
結果長は定数で指定します。整数でなければなりません。指定できる値は、文字値式のデータ型の最大長以下でなけばなりません。文字値式のデータ型がCHAR、VARCHARの場合はバイト長で指定します。NCHAR、NCHAR VARYINGの場合は文字数で指定します。結果長は、INTEGER型に変換されます。
結果長に0または負数を指定するとエラーとなります。
埋込み文字列を省略すると空白を指定したものとみなされます。
RPAD式に動的パラメタ指定が指定された場合は、エラーになります。
文字値式がNULLあるいは長さ0の文字列である場合は、RPAD式の結果はNULLとなります。
埋込み文字列がNULLあるいは長さ0の文字列である場合は、RPAD式の結果はNULLとなります。
文字値式の文字列数が結果長より大きい場合、文字値式の先頭から結果長数分の文字列を返却します。
文字値式のデータ型がCHAR、VARCHARのとき、1文字が2バイト以上で構成される文字を埋込み文字列に指定すると、結果長の指定によっては、文字を埋め込むスペースが足りなくなることがあります。そのような場合は、文字の代わりに半角ブランクが埋め込まれます。
RPAD式の引数の組み合わせおよび結果のデータ型は次のようになります。
文字値式のデータ型 | 埋込み文字列のデータ型 | 結果長 | RPAD式の結果のデータ型 |
---|---|---|---|
CHAR | CHAR または | n: バイト数 | CHAR(n) |
VARCHAR | CHAR または | n: バイト数 | VARCHAR(n) |
NCHAR | NCHAR または | n: 文字数 | NCHAR(n) |
NCHAR VARYING | NCHAR または | n: 文字数 | NCHAR VARYING(n) |
RPAD式
RPAD('ABCDE',10,'xyz') →結果は'ABCDExyzxy'になります。 RPAD(N'ABC',5,N'xyz') →結果はN'ABCxy'になります。 RPAD('ABC',5) →結果は'ABC 'になります。 RPAD('ABCDEFG',5,'xyz') →結果は'ABCDE'になります。 RPAD(N'ABC',-1,N'x') →結果はエラーになります。 結果長に負数が指定されています。 RPAD('ABC',9,'X') →結果は'ABCX 'になります。 Xの後ろに半角ブランクが設定されています。
REPLACE式に動的パラメタ指定が指定された場合は、エラーになります。
REPLACE元がNULLあるいは長さ0の文字列である場合は、REPLACE式の結果はNULLとなります。
検索文字列がNULLあるいは長さ0の文字列である場合は、REPLACE元の文字列をそのまま返却します。
置換文字列がNULLあるいは長さ0の文字列である場合、REPLACE元から検索文字列が取り除かれます。
結果長は定数で指定します。整数でなければなりません。また、指定できる値は、REPLACE元のデータ型の最大長以下でなけばなりません。REPLACE元のデータ型がCHAR、VARCHARの場合はバイト長で指定します。NCHAR、NCHAR VARYINGの場合は文字数で指定します。結果長は、INTEGER型に変換されます。省略した場合は、REPLACE元の文字列長を指定したものとみなされます。
置き換えた結果の長さが、結果長を超えた場合は、エラーとなります。
REPLACE式の引数の組み合わせおよび結果のデータ型は次のようになります。
REPLACE元のデータ型 | 検索文字列のデータ型 | 置換文字列のデータ型 | 結果長の指定 | REPLACE式の結果のデータ型 |
---|---|---|---|---|
CHAR | CHAR または | CHAR または | あり | CHAR(n) n: 結果長 |
なし | CHAR(REPLACE元の文字列長) | |||
VARCHAR | CHAR または | CHAR または | あり | VARCHAR(n) n: 結果長 |
なし | VARCHAR(REPLACE元の文字列長) | |||
NCHAR | NCHAR または | NCHAR または | あり | NCHAR(n) n: 結果長 |
なし | NCHAR(REPLACE元の文字列長) | |||
NCHAR VARYING | NCHAR または | NCHAR または | あり | NCHAR VARYING(n) n: 結果長 |
なし | NCHAR VARYING(REPLACE元の文字列長) |
REPLACE式
REPLACE('ABxyCDxyzE','xy','#',8) →結果は'AB#CD#zE'になります。 REPLACE(N'ABxxD',N'x',N'XYZ',10) →結果はN'ABXYZXYZD' になります。 REPLACE('AxyxyBxyC','xy','',5) →結果は'ABC 'になります。 REPLACE('ABCx',N'x','D',10) →結果はエラーになります。 文字列のデータ型の組合せが誤っています。 REPLACE('ABCABCABC','A','ZZZ') →結果はエラーになります。 置換え後の長さが元の長さを超えています。
REPLICATE式は、指定された結果文字数の範囲内で、指定された回数だけ、文字値式を繰り返します。
繰り返し回数に負数を指定した場合、REPLICATE式の結果はNULLとなります。
結果長は定数で指定します。整数でなければなりません。文字値式のデータ型がCHAR、VARCHARの場合はバイト長で指定します。NCHAR、NCHAR VARYINGの場合は文字数で指定します。指定できる値は、文字値式の長さと繰り返し回数を掛け合わせた値か、それ以上の値を指定します。それより小さな値を指定した場合はエラーとなります。
結果長は、文字値式のデータ型の最大長以下でなければなりません。結果長は、INTEGER型に変換されます。
結果長を省略した場合は、文字値式の長さと繰り返し回数を掛け合わせた値を指定したものとみなされます。繰り返し回数を定数以外で与えた場合は、文字値式のデータ型の最大長となります。
結果長が、文字値式の長さに満たない場合はエラーとなります。
文字値式がNULLであるか、繰り返し回数がNULLである場合は、REPLICATE式の結果はNULLとなります。
REPLICATE式に動的パラメタ指定が指定された場合は、エラーになります。
REPLICATE式の引数の組合せおよび結果のデータ型は次のようになります。
文字式のデータ型 | 繰り返し回数 | 結果長の指定 | 結果長 | REPLICATE式の結果のデータ型 |
---|---|---|---|---|
CHAR | n1: INTEGER | あり | n2: INTEGER | CHAR(n2) |
なし | - | CHAR(文字値式の長さ*n1) (注) | ||
VARCHAR | n1: INTEGER | あり | n2: INTEGER | VARCHAR(n2) |
なし | - | VARCHAR(文字値式の長さ*n1) (注) | ||
NCHAR | n1: INTEGER | あり | n2: INTEGER | NCHAR(n2) |
なし | - | NCHAR(文字値式の長さ*n1) (注) | ||
NCHAR VARYING | n1: INTEGER | あり | n2: INTEGERに変換 | NCHAR VARYING(n2) |
なし | - | NCHAR VARYING(文字値式の長さ*n1) (注) |
注) 繰り返し回数が定数でない場合は最大長になります。
REPLICATE式
REPLICATE('Xyz',2) →結果は'XyzXyz'になります。 REPLICATE(N'ABC',3,10) →結果はN'ABCABCABC ' になります。 REPLICATE('A A',3,7) →結果はエラーになります。 結果長が、文字式の長さ×繰り返し回数より小さい値が指定されています。 REPLICATE(N'b',5,1) →結果はエラーになります。 結果長が、文字式の長さより小さい値が指定されています。 REPLICATE('ABC',20000,60000) →結果はエラーになります。 結果長が、文字式の最大文字数より大きい値が指定されています。 REPLICATE('ZZZZ',-3,12) →結果はNULLになります。
REVERSE式は、文字値式を逆に並び替えたものを返します。
文字列内のデータには、各国語文字が混在していても構いません。文字として認識して処理を行います。
REVERSE式の結果のデータ型は、文字値式のデータ型と同じです。
文字値式がNULLである場合は、REVERSE式の結果はNULLとなります。
REVERSE式に動的パラメタ指定が指定された場合はエラーになります。
REVERSE式
REVERSE(N'ABC') →結果はN'CBA'になります。 REVERSE('ABCDE ') →結果は' EDCBA'になります。 REVERSE('vWxYz') →結果は'zYxWv'になります。 REVERSE(TRIM(TRAILING FROM 'XYZ ')) →結果は'ZYX'になります。
CNV_CHAR関数は、変換元の日付を日付書式に従って文字型に変換します。日付書式については、“日付書式”を参照してください。
書式要素の「H」および「Q」は「YYYJ」または「YYYY」のいずれかと組み合わせて使用する必要があります。「YYYJ」と「YYYY」の両方を同時に指定している場合、「H」または「Q」を指定するとエラーとなります。
変換元は日時値式です。DATE型に代入可能でなければなりません。
日付書式は値指定です。変換後の書式を表す文字列を指定します。
日付書式を省略すると、デフォルトの日付書式が選択されたとみなされます。デフォルトの日付書式は、'YYYY-MM-DD'です。
変換元がNULLである場合は、CNV_CHAR関数の結果はNULLとなります。
CNV_CHAR関数の結果のデータ型はVARCHAR型です。
日時書式がNULLである場合は、エラーとなります。
CNV_CHAR関数の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。
オペランド | DESCRIBE情報 |
---|---|
変換元 | DATE |
日付書式 | CHAR(10) |
CNV_CHAR関数
CNV_CHAR(DATE'2007-04-14','DAY MONTH DD,YYYY') →結果は'Saturday April 14,2007'になります。 CNV_CHAR(DATE'2007-04-14','DYMONDDYYYY') →結果は'SATAPR142007'になります。 CNV_CHAR(DATE'2007-04-14','YYYYMMDD') →結果は'20070414'になります。 CNV_CHAR(DATE'2007-03-14','YYYJ-MM-DD') →結果は'2006-03-14'になります。 CNV_CHAR(DATE'2007-04-14') →結果は'2007-04-14'になります。 CNV_CHAR(DATE'2007-04-14','DY') →結果は'SAT'になります。
使用例
文字部分列関数(N1が'CDプレーヤー'の場合。なお、N1のデータ型は各国語文字列型とします。)
SELECT SUBSTRING(N1 FROM 3 FOR 5) INTO :SUB1 FROM S1.T1 →結果は'プレーヤー'になります。
文字部分列関数(C1が'CDラジカセ'の場合。なお、C1のデータ型は文字列型とします。CDは1バイトの英数字です。)
SELECT SUBSTRING(C1 FROM 3 FOR 4) INTO :SUB1 FROM S1.T1 →結果は'ラジカセ'になります。
大文字小文字変換(C1が'aBcDe'の場合)
SELECT UPPER(C1) INTO :UPP1 FROM S1.T1 →結果は'ABCDE'になります。
TRIM関数(N1が'アダム電気□□□'の場合。なお、N1のデータ型は各国語文字列型とします。)
なお、□は空白を示します。
SELECT TRIM(BOTH N'□' FROM N1) INTO :MOJI1 FROM S1.T1 →結果は'アダム電気'になります。
TRIM関数(C1が'**CDラジカセ****'の場合。なお、C1のデータ型は文字列型とします。CDは1バイトの英数字です。)
SELECT TRIM(BOTH '* ' FROM C1) INTO :MOJI1 FROM S1.T1 →結果は'CDラジカセ'になります。
LPAD式(支店名“札幌”の左側に“*”を埋め込みます。全体の長さは、5文字とします。)
SELECT 支店コード, LPAD(支店名, 5, N'*') FROM 支店コード表 →結果は'***札幌'になります。
RPAD式(支店名“札幌”の右側に、“*”を埋め込みます。全体の長さは、5文字とします。)
SELECT 支店コード, RPAD(支店名, 5, N'*') FROM 支店コード表 →結果は'札幌***'になります。
REPLACE式(電話番号“011-999-9999”の文字列中の“-”(ハイフン)を“ ”(半角ブランク)に置き換えます。)
SELECT 支店コード, REPLACE(電話番号, '-', ' ') FROM 支店コード表 →結果は'011 999 9999'になります。
REPLICATE式(支店名“札幌”を2回繰り返します。ただし、支店名の全角ブランクは、繰り返し対象としません。)
SELECT 支店コード, REPLICATE(TRIM(TRAILING N'□' FROM 支店名), 2) FROM 支店コード表 →結果は'札幌札幌'になります。
REVERSE式(支店名“札幌”を逆に並び替えます。)
SELECT 支店コード, REVERSE(支店名) FROM 支店コード表 →結果は'幌札'になります。
CNV_CHAR関数(気象情報管理表の最高気温日付“2007-08-14”をYYYY.MM.DD DYの形式で出力します。)
SELECT 地区コード , CNV_CHAR(最高気温日付, 'YYYY.MM.DD DY') FROM 気象情報管理表 →結果は'2007.08.14 TUE'になります。