SQLは、数量詞のANY (またはSOME)およびALLを認識します。次の一般的な例で示すように、数量詞によって、1つ以上の式を1つ以上の値と比較できます。
指定する数量詞 | 検索条件が満たされるときにexpression LIKE pattern_string …が真となる範囲 |
---|---|
ALL | リスト内のすべての文字列 |
ANY | リスト内のいずれかの文字列 |
ALL数量詞は、論理文FOR です。
ANY数量詞は、論理文FOR Ǝです。
次のテーブルは、このことを示しています。
式 | 等価である式 |
---|---|
x LIKE ALL ('A%','%B','%C%') | x LIKE 'A%' AND x LIKE '%B' AND x LIKE '%C%' |
x LIKE ANY ('A%','%B','%C%') | x LIKE 'A%' OR x LIKE '%B' OR x LIKE '%C%' |
次の文は、肩書の中で文字列「Pres」が使われているか、または「Man」で始まる行を社員テーブルから選択します。
SELECT * FROM Employee WHERE JobTitle LIKE ANY ('%Pres%', 'Man%');
この文の結果は、次のとおりです。
EmpNo | Name | DeptNo | JobTitle | Salary |
---|---|---|---|---|
10021 | Smith T | 700 | Manager | 45, 000.00 |
10008 | Phan A | 300 | Vice Pres | 55, 000.00 |
10007 | Aguilar J | 600 | Manager | 45, 000.00 |
10018 | Russell S | 300 | President | 65, 000.00 |
10012 | Watson L | 500 | Vice Pres | 56, 000.00 |
次の形式に対し、ALLまたはANY/SOME限定子が指定された場合には、subqueryは、0行、1行、または数行を返します。
ただし、次のテーブルに示すように、数量詞が使用されない場合は、サブクエリーは何の値も返さないか、単一の値を返すかのどちらかです。
式 | 真になる場合のexpressionの一致対象 |
---|---|
expression LIKE (subquery) | サブクエリーによって返された単一の値。 |
expression LIKE ANY (subquery) | サブクエリーによって返された値セットのうち、少なくとも1つの値。サブクエリーが何の値も戻さない場合は偽。 |
expression LIKE ALL (subquery) | サブクエリーによって返された値セットのそれぞれの値、サブクエリーが何の値も戻さない場合は偽。 |