|
LIKE を使用すると、文字ベースの列データ内でパターン検索が可能になります。
LIKE 式の右辺の値は、単純な文字定数、USER キーワード、または(ストアド プロシージャ外では)疑問符 "?" で示される、実行時に供給される動的パラメーターである必要があります。動的パラメーターは、SQL Editor 内ではサポートされません。アプリケーション コードでのみサポートされます。
列の値内の 0 個以上の文字と一致させるには、比較値の中で必要な回数だけパーセント記号 "%" を使用します。1 文字と一致させるには、アンダースコア "_" を使用します。これらのワイルドカード記号をリテラル文字として一致させる必要がある場合は、記号の前に円記号を使用して、その記号がリテラル文字であることを示します。
次の例は、5 文字長で、かつ中央の 3 文字が abc
であるすべての列値と一致します。
次の例は、円記号を含むすべての列値と一致します。
次の例は、パーセント記号で始まる列値以外のすべての列値と一致します。
次の例は、1 つまたは複数の一重引用符を含むすべての列値と一致します。
次の例は、2 番目の文字が二重引用符であるすべての列値と一致します。
次の例では、Building_Name
列が入力変数 :rname
に格納された文字列を含み、Type
列が入力変数 :rtype
に格納された文字列を含む行を返す、ストアド プロシージャが作成されます。
CREATE PROCEDURE room_test(IN :rname CHAR(20), IN :rtype CHAR(20)) RETURNS(Building_Name CHAR(25), "Type" CHAR(20)); BEGIN DECLARE :like1 CHAR(25); DECLARE :like2 CHAR(25); SET :like1 = '%' + :rname + '%'; SET :like2 = '%' + :rtype + '%'; SELECT Building_Name, "Type" FROM Room WHERE Building_Name LIKE :like1 AND "Type" LIKE :like2; END;
次のステートメントを上記のストアド プロシージャ内に記述した場合、LIKE 演算子の右辺の式が原因で、構文エラーが発生します。右辺は単純な定数でなければなりません。
不正な構文:
|