条件演算子の使用

ColdFusion では、SQL ステートメントで次の条件演算子を使用できます。

テスト条件演算子

この条件演算子は、ブール式が true、false、または不明のいずれかであることをテストします。

シンタックス

cond_test ::= expression [IS [NOT] {TRUE | FALSE | UNKNOWN} ]

SELECT _isValid FROM Chemicals
WHERE _isValid IS true;

null 条件演算子

この条件演算子は、式が null かどうかをテストします。

シンタックス

null_cond ::= expression IS [NOT] NULL

SELECT bloodVal FROM Standards
WHERE bloodVal IS NOT null;

比較条件演算子

この条件演算子は、ある式と、それと同じデータタイプ (数値、文字列、日付、またはブール値) を持つ別の式を比較します。レコードセットの関連する行のみを選択して読み取るときに使用できます。

シンタックス

comparison_cond ::= expression [> | >= | <> | != | < | <=] expression

次の例は、Comparison 条件演算子を使用して、IQ が 150 以上の犬のみを抽出します。

SELECT dog_name, dog_IQ
FROM Dogs
WHERE dog_IQ >= 150;

BETWEEN 条件演算子

この条件演算子は、式と式を比較します。レコードセットの関連する行のみを選択して読み取るときに使用できます。Comparison 条件演算子と同様に、BETWEEN 条件演算子も比較を行います。ただし、BETWEEN 条件演算子は、特定の範囲の値との比較を行います。このため、そのシンタックスには、範囲に含まれる最小値と最大値の 2 つの値が必要です。これらの値はキーワード AND で区切る必要があります。

シンタックス

between_cond ::= expression [NOT] BETWEEN expression AND expression

次の例は、BETWEEN 条件演算子を使用して、IQ が 150 以上 165 以下の犬のみを抽出します。

SELECT dog_name, dog_IQ
FROM Dogs
WHERE dog_IQ BETWEEN 150 AND 165;

IN 条件演算子

この条件演算子を使用すると、一致条件のカンマ区切りのリストを指定できます。これは、OR 条件演算子と似ています。IN 条件演算子は、長いリストで作業する場合に読み取りやすくなるだけでなく、別の SELECT ステートメントを含めることもできます。

シンタックス

in_cond ::= expression [NOT] IN (expression_list)

次の例は、IN 条件演算子を使用して、Ken's Kennels または Barb's Breeders のいずれかで誕生した犬のみを抽出します。

SELECT dog_name, dog_IQ, Kennel_ID
FROM Dogs
WHERE kennel_ID IN ('Kens','Barbs');

LIKE 条件演算子

この条件演算子を使用すると、検索パターンとデータを比較する、ワイルドカード検索を実行できます。LIKE 条件演算子は、データを部分的に不明な値と比較する点で、BETWEEN、IN などの他の条件演算子とは異なります。

シンタックス

like_cond ::= left_string_exp [NOT] LIKE right_string_exp [ESCAPE escape_char]

left_string_exp は特定の文字列にしたり、文字列の列へのリファレンスにしたりできます。right_string_exp は文字列の列へのリファレンスにしたり、検索パターンにしたりできます。検索パターンは、文字のテキストと 1 つまたは複数のワイルドカード文字から構成される検索条件です。ワイルドカード文字は特殊文字で、検索パターンの不明な部分を表し、次のように解釈されます。

メモ: 前のバージョンの ColdFusion では、括弧で囲まれた範囲はサポートしていません。

次の例は、LIKE 条件演算子を使用して、ボストンテリア、ジャックラッセルテリア、スコティッシュテリアなど、テリア種の犬のみを抽出します。

SELECT dog_name, dog_IQ, breed
FROM Dogs
WHERE breed LIKE '%Terrier';

次の例は、括弧で囲まれた範囲を使用する SELECT ステートメントです。

SELECT lname FROM Suspects WHERE lname LIKE 'A[^c]%';
SELECT lname FROM Suspects WHERE lname LIKE '[a-m]%';
SELECT lname FROM Suspects WHERE lname LIKE '%[]';
SELECT lname FROM Suspects WHERE lname LIKE 'A[%]%';
SELECT lname FROM Suspects WHERE lname LIKE 'A[^c-f]%';

大文字と小文字の区別

ColdFusion の他の部分とは異なり、クエリーオブクエリーは大文字と小文字を区別します。ただしクエリーオブクエリーは、2 つの文字列関数 UPPER()LOWER() をサポートしています。これらの関数を使用すると、大文字と小文字を区別しない照合を実行できます。

次の例は、'Sylvester' のみを照合します。

SELECT dog_name
FROM Dogs
WHERE dog_name LIKE 'Sylvester';

次の例では大文字と小文字を区別しません。LOWER() 関数を使用して、'Sylvester'、'sylvester'、'SYLVESTER' などをすべて小文字として処理し、すべて小文字の文字列 'sylvester' と照合します。

SELECT dog_name
FROM Dogs
WHERE LOWER(dog_name) LIKE 'sylvester';

LIKE 条件の右側に変数を使用して大文字と小文字を区別しない比較を実行する場合は、LCase 関数または UCase 関数を使用して変数のすべてのテキストを強制的に大文字または小文字に揃えます。次に例を示します。

WHERE LOWER(dog_name) LIKE '#LCase(FORM.SearchString)#';

ワイルドカードのエスケープ

条件演算子の ESCAPE 節を使用して、独自のエスケープ文字を指定できます。

次の例は、ESCAPE 節を使用して、通常ワイルドカード文字として解釈されるパーセント記号 (%) を文字として検索できるようにします。

SELECT emp_discount
FROM Benefits
WHERE emp_discount LIKE '10¥%'
ESCAPE '¥';

ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX* | ColdFusion 5* | フォーラム* | デベロッパーセンター | サポート情報 | バグ報告

バージョン7