Symfoware Server SQLビギナーズガイド - FUJITSU -
目次 索引 前ページ次ページ

第6章 いろいろなデータ操作の方法

6.4 文字列のデータを操作する

表のデータを操作するときに、文字列を操作したり、文字列と文字列を結合させたりすることができます。文字列の一部を操作する処理には以下のものがあります。

[表:文字列の一部を操作する処理]

処理名

機能

文字部分列関数

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

POSITION式

文字列の部分列の開始位置を求めます。

LENGTH式

文字列の長さを求めます。

TRIM関数

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

大文字小文字変換

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

連結

両項の文字列を結合します。

LPAD式

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

RPAD式

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

REPLACE式

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

REPLICATE式

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

REVERSE式

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

 

例1

会社表から、会社名および住所を取り出します。会社名にはうしろの空白文字を取り除いて“株式会社”を結合させ、住所は都道府県のみを取り出します。

特定の文字列の一部を取り出したり、特定の列の値と文字列を結合させて取り出すことができます。TRIM関は、TRIM指定にLEADINGを指定した場合は値式の前端から、TRAILINGを指定した場合は後端から、BOTHを指定した場合は両端から文字を取り除きます。

は、複数の文字列を連結演算(“||”)でつないで記述します。このとき、列のデータ型は文字列型または各国語文字列型であることが必要です。また、連結の両項のデータ型は文字列型または各国語文字列型であり、それらは比較可能であることが必要です。比較可能なデータ型については、“表:比較可能なデータ型”を参照してください。

文字部分列関は、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) 文字部分列関数

[図:文字値関数を組み合わせてデータを取り出す例]

例2

営業所一覧表という表から、コードおよび営業所名を取り出します。このとき、営業所名は“営業所”という文字列を取り除いて取り出します。
SELECT コード,

    SUBSTRING(営業所名 FROM 1 FOR POSITION(N'営業所' IN 営業所名)-1)
                                       (A)       (1)           (2)

    FROM 在庫管理.営業所一覧表

(1) 値式

(2) 値式

(A)〜(2) POSITION式

[図:文字部分列関数と数値関数を組み合わせてデータを取り出す例]

例3

第二在庫表の製品名の文字列の最終3文字を取り出します。
SELECT コード,SUBSTRING(COL2 FROM CHAR_LENGTH(TRIM(COL2))-2) AS 製品略称,在庫数量
                                        (A)         (1)
            FROM  在庫管理.第二在庫表

(1) TRIM関数

(A)〜(1) LENGTH式

[図:文字部分列関数と数値関数を組み合わせてデータを更新する例]

例4

支店名の左側に“*”を埋め込みます。全体の長さは、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式

例5

第二在庫表という表のCOL2の“ビデオ”という文字を“VIDEO”に置換えます。
UPDATE 在庫管理.第二在庫表
  SET  COL2 =  REPLACE(TRIM(COL2),  N'ビデオ',N'VIDEO')
                 (A)     (1)              (2)        (3)

(1) REPLACE元

(2) 検索文字列

(3) 置換文字列

(A)〜(3) REPLACE式


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2007