ページの先頭行へ戻る
Symfoware Server V10.0.0 SQLリファレンス

2.5.3 データ列値関数

機能

データ列値関数は、文字列型の値となる関数です。

関数

機能

文字部分列関数

文字部分列関数は、SUBSTRINGを指定して、文字値式の開始位置から、文字列長分の部分列を求めます。

大文字小文字変換

大文字小文字変換は、UPPERまたはLOWERを指定して、文字を大文字または小文字に変換します。

TRIM関数

TRIM関数は、指定された文字を取り除きます。

LPAD式

LPAD式は、文字値式の左側に、全体の文字列数が結果長になるまで、埋込み文字列をサイクリックに埋め込んで、結果長数分の文字列を返します。

RPAD式

RPAD式は、文字値式の右側に、全体の文字列数が結果長になるまで、埋込み文字列をサイクリックに埋め込んで、結果長数分の文字列を返します。

REPLACE式

REPLACE式はREPLACE元の文字列中に含まれる検索文字列のすべてを置換文字列に置き換えた結果を返却します。

REPLICATE式

REPLICATE式は、指定された結果文字数の範囲内で、指定された回数だけ、値式を繰り返します。

REVERSE式

REVERSE式は、値式を逆に並び替えたものを返します。

CNV_CHAR関数

日時値式のデータを指定された書式に従って文字型に変換します。

記述形式

構文要素の構成

参照項番

一般規則

文字部分列関数(SUBSTRING)
  • 文字部分列関数は、SUBSTRINGを指定して、文字値式の開始位置から文字列長分の部分列を求めます。

  • 開始位置と文字列長は数値式で指定します。開始位置と文字列長はINTEGER型に変換されます。

  • 開始位置と文字列長はそれぞれ文字数を指定します。

  • 文字列長が省略された場合は、文字値式の最後の文字までの部分列を求めます。

  • 開始位置と文字列長の和が文字値式の長さより大きければ、文字部分列関数の結果は開始位置から文字値式の最後の文字までの部分列を求めます。

  • 開始位置が文字値式の長さより大きければ、文字部分列関数の結果は長さ0の文字列になります。

  • 開始位置に負の値が指定された場合、負の位置からの部分列が返却されます。

  • 文字列長が負の値ならば、エラーになります。

  • 開始位置または文字列長がNULLならば、エラーになります。

  • 文字部分列関数の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。SQL記述子域のTYPEにINTEGERの情報が設定されます。SQL記述子域のLENGTHにINTEGERのデータ長が設定されます。

    表2.24 動的パラメタ指定が指定された場合のDESCRIBE情報

    オペランド

    DESCRIBE情報

    文字値式

    エラー

    開始位置

    INTEGER

    文字列長

    INTEGER

  • 文字値式がNULLならば、結果もNULLになります。文字部分列関数の結果のデータ型を以下に示します。

    表2.25 文字部分列関数の結果のデータ型

    値式のデータ型

    結果のデータ型

    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)
  • 大文字小文字変換は、指定された文字を大文字または小文字に変換します。

  • 大文字小文字変換には、UPPERとLOWERがあります。

  • UPPERが指定されると、大文字小文字変換の結果は、小文字を大文字に置き換えた値になります。

  • LOWERが指定されると、大文字小文字変換の結果は、大文字を小文字に置き換えた値になります。

  • 大文字小文字変換に動的パラメタ指定が指定された場合は、エラーになります。

  • 文字値式がNULLならば、結果もNULLになります。

  • 大文字小文字変換の結果のデータ型を以下に示します。

    表2.26 大文字小文字変換の結果のデータ型

    値式のデータ型

    結果のデータ型

    CHAR(n)

    CHAR(n)

    VARCHAR(n)

    VARCHAR(n)

    その他

    エラー

大文字小文字変換

UPPER('Symfoware') →結果は 'SYMFOWARE'になります。
LOWER('Symfoware') →結果は 'symfoware'になります。
TRIM関数(TRIM)
  • TRIM関数は、指定された文字を取り除きます。

  • LEADING、TRAILINGおよびBOTHをTRIM指定と呼びます。

  • TRIM指定が省略された場合、BOTHが指定されたものとみなされます。

  • TRIM文字は、文字値式で指定します。TRIM文字が省略された場合、空白が指定されたものとみなされます。

  • TRIM文字の長さが1でなければ、エラーになります。

  • TRIM元は、文字値式で指定します。

  • LEADINGが指定されると、TRIM関数の結果は、TRIM元の前端からTRIM文字を取り除いた値になります。同一文字が前端にある場合は、すべて取られます。

  • TRAILINGが指定されると、TRIM関数の結果は、TRIM元の後端からTRIM文字を取り除いた値になります。同一文字が後端にある場合は、すべて取られます。

  • BOTHが指定されると、TRIM関数の結果は、TRIM元の両端からTRIM文字を取り除いた値になります。同一文字が両端にある場合は、すべて取られます。

  • TRIM関数に動的パラメタ指定が指定された場合は、エラーになります。

  • TRIM文字またはTRIM元がNULLならば、結果もNULLになります。

  • TRIMオペランドは、TRIM関数で指定する引数で、TRIM文字とTRIM元を指定します。

  • TRIM関数の結果のデータ型を以下に示します。

    表2.27 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
  • 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 または
    VARCHAR

    n: バイト数
    INTEGERに変換。

    CHAR(n)

    VARCHAR

    CHAR または
    VARCHAR

    n: バイト数
    INTEGERに変換。

    VARCHAR(n)

    NCHAR

    NCHAR または
    NCHAR VARYING

    n: 文字数
    INTEGERに変換。

    NCHAR(n)

    NCHAR VARYING

    NCHAR または
    NCHAR VARYING

    n: 文字数
    INTEGERに変換。

    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
  • 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 または
    VARCHAR

    n: バイト数
    INTEGERに変換

    CHAR(n)

    VARCHAR

    CHAR または
    VARCHAR

    n: バイト数
    INTEGERに変換

    VARCHAR(n)

    NCHAR

    NCHAR または
    NCHAR VARYING

    n: 文字数
    INTEGERに変換

    NCHAR(n)

    NCHAR VARYING

    NCHAR または
    NCHAR VARYING

    n: 文字数
    INTEGERに変換

    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式は、REPLACE元の文字列中に含まれる検索文字列のすべてを置換文字列に置き換えた結果を返却します。

  • REPLACE元、検索文字列、置換文字列は文字値式です。

  • 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 または
    VARCHAR

    CHAR または
    VARCHAR

    あり

    CHAR(n) n: 結果長

    なし

    CHAR(REPLACE元の文字列長)

    VARCHAR

    CHAR または
    VARCHAR

    CHAR または
    VARCHAR

    あり

    VARCHAR(n) n: 結果長

    なし

    VARCHAR(REPLACE元の文字列長)

    NCHAR

    NCHAR または
    NCHAR VARYING

    NCHAR または
    NCHAR VARYING

    あり

    NCHAR(n) n: 結果長

    なし

    NCHAR(REPLACE元の文字列長)

    NCHAR VARYING

    NCHAR または
    NCHAR VARYING

    NCHAR または
    NCHAR VARYING

    あり

    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式は、指定された結果文字数の範囲内で、指定された回数だけ、文字値式を繰り返します。

  • 繰り返し回数は数値式です。INTEGER型に変換されます。

  • 繰り返し回数に負数を指定した場合、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式は、文字値式を逆に並び替えたものを返します。

  • 文字列内のデータには、各国語文字が混在していても構いません。文字として認識して処理を行います。

  • 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関数
  • 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情報を以下に示します。

    表2.28 動的パラメタ指定が指定された場合の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'になります。

使用例

1

文字部分列関数(N1が'CDプレーヤー'の場合。なお、N1のデータ型は各国語文字列型とします。)

SELECT SUBSTRING(N1 FROM 3 FOR 5) INTO :SUB1 FROM S1.T1
→結果は'プレーヤー'になります。

2

文字部分列関数(C1が'CDラジカセ'の場合。なお、C1のデータ型は文字列型とします。CDは1バイトの英数字です。)

SELECT SUBSTRING(C1 FROM 3 FOR 4) INTO :SUB1 FROM S1.T1
→結果は'ラジカセ'になります。

3

大文字小文字変換(C1が'aBcDe'の場合)

SELECT UPPER(C1) INTO :UPP1 FROM S1.T1
→結果は'ABCDE'になります。

4

TRIM関数(N1が'アダム電気□□□'の場合。なお、N1のデータ型は各国語文字列型とします。)

なお、□は空白を示します。

SELECT TRIM(BOTH N'□' FROM N1) INTO :MOJI1 FROM S1.T1
→結果は'アダム電気'になります。

5

TRIM関数(C1が'**CDラジカセ****'の場合。なお、C1のデータ型は文字列型とします。CDは1バイトの英数字です。)

SELECT TRIM(BOTH '* ' FROM C1) INTO :MOJI1 FROM S1.T1
→結果は'CDラジカセ'になります。

6

LPAD式(支店名“札幌”の左側に“*”を埋め込みます。全体の長さは、5文字とします。)

SELECT 支店コード, LPAD(支店名, 5, N'*') FROM 支店コード表
→結果は'***札幌'になります。

7

RPAD式(支店名“札幌”の右側に、“*”を埋め込みます。全体の長さは、5文字とします。)

SELECT 支店コード, RPAD(支店名, 5, N'*') FROM 支店コード表
→結果は'札幌***'になります。

8

REPLACE式(電話番号“011-999-9999”の文字列中の“-”(ハイフン)を“ ”(半角ブランク)に置き換えます。)

SELECT 支店コード, REPLACE(電話番号, '-', ' ') FROM 支店コード表
→結果は'011 999 9999'になります。

9

REPLICATE式(支店名“札幌”を2回繰り返します。ただし、支店名の全角ブランクは、繰り返し対象としません。)

SELECT 支店コード, REPLICATE(TRIM(TRAILING N'□' FROM 支店名), 2)
    FROM 支店コード表
→結果は'札幌札幌'になります。

10

REVERSE式(支店名“札幌”を逆に並び替えます。)

SELECT 支店コード, REVERSE(支店名) FROM 支店コード表
→結果は'幌札'になります。

11

CNV_CHAR関数(気象情報管理表の最高気温日付“2007-08-14”をYYYY.MM.DD DYの形式で出力します。)

SELECT 地区コード , CNV_CHAR(最高気温日付, 'YYYY.MM.DD DY')
    FROM 気象情報管理表
→結果は'2007.08.14 TUE'になります。