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'との
                                        比較結果は真