COBOL2002 言語 拡張仕様編

[目次][索引][前へ][次へ]

9.5.9 LIKE述語(データベースアクセス機能)

形式
[図データ]

機能
LIKE述語(like predicate)は,パターン照合比較する。

一般規則
  1. 列指定のデータ型,LIKE右辺の値指定およびESCAPE指定の値指定のデータ型は,文字列でなければならない。
  2. LIKE左辺の列指定,または右辺の値指定がナル値の場合,結果は不定となる。
  3. LIKE右辺の値指定には,パターン照合比較するための文字列パターンを指定する。文字列パターンでは,下線(_)は,任意文字指示子を表し,パーセント(%)は,任意文字列指示子を表す。下線(_)でも,パーセント(%)でもない文字は,それ自身を表す。次にその例を示す。
    列指定のデータ
    'A' …1
    'ABC' …2
    'ABCD' …3
    'BCD' …4
     
    文字列パターン 真となるデータ
    'ABC' 2
    '%A%' 1,2,3
    '_BC%' 2,3
    '_C_' 4
     
  4. ESCAPE指定の値指定は,文字列パターンでの下線(_),パーセント(%)をそれ自身を表す文字と認識するための1文字のエスケープ文字を指定する。例えば,'%A'という文字列で始まるデータを持つ列xをパターン照合比較する場合は,次のように指定すれば真となる。
    x LIKE '\%A%' ESCAPE '\'

注意事項
文字列パターンを文字列型固定長形式の埋め込み変数で指定する場合,変数の長さより短い文字列パターンを設定すると,右側の空白を含めて文字列パターンとなるため注意が必要である。
例えば,'ABCD'というデータを持つ列xをパターン照合比較した場合,次のように文字列パターン'AB%'では結果が真とならない。
01  STR001   PIC X(4).
  :
MOVE 'AB%' TO STR001.
EXEC SQL
   SELECT  ....   x LIKE :STR001  .... 列xのデータ'ABCD'との
                                       比較結果は偽
 
  :
MOVE 'AB%%' TO STR001.
EXEC SQL
   SELECT  ....    x LIKE :STR001  .... 列xのデータ'ABCD'との
                                        比較結果は真