LIKE条件は、指定したパターンがCHAR、VARCHAR2、NCHARまたはNVARCHAR2式に含まれているかどうかを判断します。式にパターンが含まれている場合、条件はTRUEと評価されます。
Expression [NOT] LIKE {'PatternString'| {? | :DynamicParameter}} [ESCAPE {'EscapeChar' | {? | :DynamicParameter}}]
パラメータ
パラメータ | 説明 |
---|---|
Expression |
式の構文については、第3章「式」を参照してください。 |
PatternString |
式から検索する文字列を指定します。パターンは文字(数字と特殊文字を含む)のみです。 たとえば、NAME LIKE 'Annie' は、空白を含まないAnnieという名前にかぎりTRUE と評価されます。大文字と小文字の区別は重要です。
条件のパターンに次の記号を使用して、部分一致をテストする条件を使用することもできます。 _ : 単一の文字を表します。 次にその例を示します。
たとえば、
|
EscapeChar |
パターン内の_と%記号をリテラルとして解釈させる場合に使用できる、オプションのエスケープ文字を定義します。
エスケープ文字は単一の文字である必要があります。エスケープ文字をパターンに使用する場合は、その後に続けてエスケープ文字自体、_記号または%記号と指定する必要があります。そのようなペアによって、パターンの2番目文字の単一リテラルの出現が表現されます。エスケープ文字では、大文字と小文字は常に区別されます。 |
? | 準備されたSQL文の動的パラメータです。パラメータの値は、文の実行時に設定されます。 |
説明
エスケープ文字を指定しない場合、パターンに含まれる_
または%はワイルド・カード文字として解釈されます。エスケープ文字を指定した場合、それに後続するワイルド・カードまたはエスケープ文字はリテラルとして扱われます。エスケープ文字に後続する文字がワイルド・カードまたはエスケープ文字ではない場合、エラーになります。
式の値、パターン、エスケープ文字がNULLの場合、LIKE条件はNULLと評価され、行は処理されません。
例
先頭がAで始まる地域のベンダーを特定します。
SELECT VendorName FROM Purchasing.Vendors WHERE VendorState LIKE 'A%';
名前がACME_
で始まるベンダー名(ESCAPE
句の使用に注意)を特定します。
SELECT VendorName FROM Purchasing.Vendors WHERE VendorName LIKE 'ACME!_%' ESCAPE '!';
LIKE条件は、NCHARとNVARCHAR2文字列のパターン一致に使用できます。パターン一致文字は、次のとおりです。
文字 | 説明 |
---|---|
U+005F SPACING UNDERSCORE | 単一のUnicode文字を表します。 |
U+0025 PERCENT SIGN | 0(ゼロ)文字以上のUnicode文字列を表します。 |
説明
エスケープ文字は、単一のUnicode文字またはパラメータと同様にサポートされます。
LIKEオペランドの型は、すべてのキャラクタ・タイプの組合せになります。
LIKE条件では、大/小文字およびアクセントを区別しないNLS_SORT
がサポートされています。
これらの例では、Unicode文字U+0021 EXCLAMATION MARKは、Unicode文字U+005F SPACING UNDERSCOREのエスケープとして使用されています。Unicode文字U+0025 PERCENT SIGNはエスケープされず、パターン一致としてみなされます。
VendorName
は、NCHARまたはNVARCHAR2の列です。
SELECT VendorName FROM Purchasing.Vendors WHERE VendorName LIKE N'ACME!_%' ESCAPE N'!';
この例は次の例と同等です。
SELECT VendorName FROM Purchasing.Vendors WHERE VendorName LIKE N'ACME!\u005F\u0025' ESCAPE N'!';