LIKEESCAPEオプションによって、LIKE演算子にエスケープ文字を指定できます。
データ型
ID
構文
LIKEESCAPE = char
引数
LIKEのテキスト比較でエスケープ文字として使用する文字を指定するテキスト式。デフォルトのエスケープ文字はありません。
LIKEのエスケープ文字は、LIKEのテキスト比較で使用されるLIKEの引数を受け入れるLISTNAMESプログラムに影響します。
注意
エスケープ文字の使用
LIKEのエスケープ文字によって、LIKE演算子のワイルドカード文字を含むテキスト式を検索できます。LIKE演算子のワイルドカード文字には、1文字と一致するアンダースコア(_
)と、ゼロ文字以上の文字列と一致するパーセント文字(%
)があります。
テキスト比較にアンダースコアまたはパーセント文字を含めるには、最初にLIKEESCAPEオプションによってエスケープ文字を指定します。その後に、LIKEの式で、指定したLIKEESCAPE文字をアンダースコアまたはパーセント文字の前に付けます。
バックスラッシュ(\
)はOLAP DMLの標準のエスケープ文字なので、LIKEのエスケープ文字としてバックスラッシュを使用しない場合があります。そのため、2つのバックスラッシュによって、LIKEESCAPEが2番目のバックスラッシュをリテラル文字として扱うように示す必要があります。
例
例6-40 LIKE演算子でのエスケープ文字の使用
この例は、エスケープ文字を指定する方法、およびそれをLIKE演算子で使用する方法を示します。
次のテキスト値を含むprodstat
という名前の変数があるとします。
DEFINE prodstat TEXT <product> prodstat(product 'Tents') = - 'What are the results of the fabric testing?' prodstat(product 'Canoes') = - 'How has the flooding affected distribution?' prodstat(product 'Racquets') = - 'The best-selling model is Whack_it!' prodstat(product 'Sportswear') = - '90% of the stock is ready to ship.' prodstat(product 'Footwear') = - 'When are the new styles going to be ready?'
prodstat
変数のセルに含まれるテキストで特定の文字を検索するfindeschar
という名前の次のプログラムがあります。このプログラムはLIKE演算子を使用します。
ARGUMENT findstring TEXT FOR product IF prodstat LIKE findstring THEN SHOW JOINCHARS(product ' - ' prodstat)
パーセント文字(%
)またはアンダースコア(_
)を含むテキスト値をプログラムで検索できるようにするために、LIKEESCAPEオプションを使用してエスケープ文字を指定する必要があります。エスケープ文字に疑問符(?
)を使用するとします。エスケープ文字を疑問符に設定する前は、次の文によって、疑問符を含むテキストが検索されます。
CALL findeschar('%?%') "Find any text that contains a question mark.
この文によって生成される出力は、次のとおりです。
Tents - What are the results of the fabric testing? Canoes - How has the flooding affected distribution? Footwear - When are the new styles going to be ready?
次の文は、エスケープ文字として疑問符(?
)を指定し、FINDESCHARプログラムをコールします。
LIKEESCAPE = '?' CALL findeschar('%?%') "Find any text that ends with a percent character.
この文によって検索されるテキストはありません。なぜなら、パーセント文字で終わるテキストはprodstat
にないからです。パーセント文字を含むテキストを検索するには、次の文のようにもう1つワイルドカード文字を追加します。LIKEESCAPEは、最初のパーセント文字をゼロ文字以上と一致するワイルドカードとして解釈し、2番目のパーセント文字をリテラルのパーセント文字(%)として解釈し(前に疑問符のエスケープ文字があるため)、3番目のパーセント文字をワイルドカード文字として解釈します。LIKEESCAPEは、前後にゼロ文字以上あるパーセント文字を検索して結果を返します。
CALL findeschar('%?%%') "Find any text that contains a percent character.
この文によって生成される出力は、次のとおりです。
Sportswear - 90% of the stock is ready to ship.
次の文は、アンダースコアを含むテキストを検索します。
CALL findeschar('%?%') "Find any text that contains an underscore.
この文によって生成される出力は、次のとおりです。
Racquets - The best-selling model is Whack_it!
次の文は、エスケープ文字を二重にして、エスケープ文字を含むテキストを検索します。
CALL findeschar('%??%') "Find any text that contains a question mark.
この文によって生成される出力は、次のとおりです。
Tents - What are the results of the fabric testing? Canoes - How has the flooding affected distribution? Footwear - When are the new styles going to be ready?
例6-41 LISTNAMESプログラムでのエスケープ文字の使用
この例は、LIKE引数のワイルドカード文字を含むオブジェクトの名前を検索する方法を示します。次の文は、LIKEESCAPEオプションを使用してエスケープ文字を指定し、アンダースコアを含む2つのオブジェクト名を定義し、名前にアンダースコアが含まれるディメンションをリスト表示します。
LIKEESCAPE = '?' DEFINE my_textdim DIMENSION TEXT DEFINE my_intdim DIMENSION INTEGER LISTNAMES DIMENSION LIKE '%?%'
この文によって生成される出力は、次のとおりです。
3 DIMENSIONs ---------------- MY_INTDIM MY_TEXTDIM _DE_LANGDIM