表のデータを操作するときに、文字列を操作したり、文字列と文字列を結合させたりすることができます。文字列の一部を操作する処理には以下のものがあります。
処理名 | 機能 |
---|---|
文字部分列関数 | 文字部分列関数は、SUBSTRINGまたはOCTET_SUBSTRINGを指定して、文字値式の開始位置から、文字列長分の部分列を求めます。 |
POSITION式 | POSITION式は、POSITIONまたはOCTET_POSITIONを指定して、1番目の文字値式の文字列を持つ2番目の文字値式中の文字の開始位置を求めます。 |
LENGTH式 | LENGTH式は、データ列値式の文字数またはバイト数を求めます。 |
TRIM関数 | TRIM関数は、指定された文字を取り除きます。 |
LTRIM関数 | LTRIM関数は、TRIM元の前端から連続する空白を削除します。 |
RTRIM関数 | RTRIM関数は、TRIM元の後端から連続する空白を削除します。 |
大文字小文字変換 | 大文字小文字変換は、UPPERまたはLOWERを指定して、文字を大文字または小文字に変換します。 |
連結 | 連結は、両項の文字列を結合します。 |
LPAD式 | LPAD式は、文字値式の左側に、全体の文字列数が結果長になるまで、埋込み文字列をサイクリックに埋め込んで、結果長数分の文字列を返します。 |
RPAD式 | RPAD式は、文字値式の右側に、全体の文字列数が結果長になるまで、埋込み文字列をサイクリックに埋め込んで、結果長数分の文字列を返します。 |
REPLACE式 | REPLACE式はREPLACE元の文字列中に含まれる検索文字列のすべてを置換文字列に置き換えた結果を返却します。 |
REPLICATE式 | REPLICATE式は、指定された結果文字数の範囲内で、指定された回数だけ、値式を繰り返します。 |
REVERSE式 | REVERSE式は、値式を逆に並び替えたものを返します。 |
ASCII関数 | ASCII関数は、文字値式の左端の1バイトのASCIIコードを返却します。 |
会社表から、会社名および住所を取り出します。会社名にはうしろの空白文字を取り除いて“株式会社”を結合させ、住所は都道府県のみを取り出します。
特定の文字列の一部を取り出したり、特定の列の値と文字列を結合させて取り出すことができます。TRIM関数は、TRIM指定にLEADINGを指定した場合は値式の前端から、TRAILINGを指定した場合は後端から、BOTHを指定した場合は両端から文字を取り除きます。
連結は、複数の文字列を連結演算子(“||”)でつないで記述します。このとき、列のデータ型は文字列型または各国語文字列型であることが必要です。また、連結の両項のデータ型は文字列型または各国語文字列型であり、それらは比較可能であることが必要です。比較可能なデータ型については、“表9.5 比較可能なデータ型”を参照してください。
文字部分列関数は、SUBSTRINGを指定して、値式の開始位置から文字列長分の部分列を求めます。
SELECT TRIM( TRAILING FROM 会社名 ) || N'株式会社', (1) (2) (A) SUBSTRING( 住所 FROM 1 FOR 4 ) (B) (3) (4) (5) FROM 在庫管理.会社表
(1) TRIM指定
(2) 値式
(1)~(2) TRIM関数
(1)~(A) 連結
(3) 値式
(4) 開始位置
(5) 文字列長
(B)~(5) 文字部分列関数
図9.20 文字値関数を組み合わせてデータを取り出す例
営業所一覧表という表から、コードおよび営業所名を取り出します。このとき、営業所名は“営業所”という文字列を取り除いて取り出します。
SELECT コード, SUBSTRING(営業所名 FROM 1 FOR POSITION(N'営業所' IN 営業所名)-1) (A) (1) (2) FROM 在庫管理.営業所一覧表
(1) 値式
(2) 値式
(A)~(2) POSITION式
図9.21 文字部分列関数と数値関数を組み合わせてデータを取り出す例
第二在庫表の製品名の文字列の最終3文字を取り出します。
SELECT コード,SUBSTRING(COL2 FROM CHAR_LENGTH(TRIM(COL2))-2) AS 製品略称,在庫数量 (A) (1) FROM 在庫管理.第二在庫表
(1) TRIM関数
(A)~(1) LENGTH式
図9.22 文字部分列関数と数値関数を組み合わせてデータを更新する例
支店名の左側に“*”を埋め込みます。全体の長さは、5文字とします。
SELECT 支店コード, LPAD(TRIM(TRAILING N'□' FROM 支店名), 5, N'*') (B) (A) (1) (2) (3) (4) FROM 支店コード表
(1) TRIM指定
(2) 値式
(3) 結果長
(4) 埋込み文字列
(A)~(2) TRIM関数
(B)~(4) LPAD式
第二在庫表という表のCOL2の“ビデオ”という文字を“VIDEO”に置換えます。
UPDATE 在庫管理.第二在庫表 SET COL2 = REPLACE(TRIM(COL2), N'ビデオ',N'VIDEO') (A) (1) (2) (3)
(1) REPLACE元
(2) 検索文字列
(3) 置換文字列
(A)~(3) REPLACE式