検索条件 (Transact-SQL)Search Condition (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

論理演算子 AND、OR、および NOT を使用した、1 つ以上の述語の組み合わせです。Is a combination of one or more predicates that use the logical operators AND, OR, and NOT.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
<search_condition> ::=  
    MATCH(<graph_search_pattern>) | <search_condition_without_match> | <search_condition> AND <search_condition>

<search_condition_without_match> ::= 
    { [ NOT ] <predicate> | ( <search_condition_without_match> ) }   
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition_without_match> ) } ]   
[ ,...n ]   
  
<predicate> ::=   
    { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression   
    | string_expression [ NOT ] LIKE string_expression   
  [ ESCAPE 'escape_character' ]   
    | expression [ NOT ] BETWEEN expression AND expression   
    | expression IS [ NOT ] NULL   
    | CONTAINS   
  ( { column | * } , '<contains_search_condition>' )   
    | FREETEXT ( { column | * } , 'freetext_string' )   
    | expression [ NOT ] IN ( subquery | expression [ ,...n ] )   
    | expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }   
  { ALL | SOME | ANY} ( subquery )   
    | EXISTS ( subquery )     }   
    
<graph_search_pattern> ::=
    { <node_alias> { 
                      { <-( <edge_alias> )- } 
                    | { -( <edge_alias> )-> }
                    <node_alias> 
                   } 
    }
  
<node_alias> ::=
    node_table_name | node_table_alias 

<edge_alias> ::=
    edge_table_name | edge_table_alias
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  
  
< search_condition > ::=   
    { [ NOT ] <predicate> | ( <search_condition> ) }   
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]   
[ ,...n ]   
  
<predicate> ::=   
    { expression { = | < > | ! = | > | > = | < | < = } expression   
    | string_expression [ NOT ] LIKE string_expression   
    | expression [ NOT ] BETWEEN expression AND expression   
    | expression IS [ NOT ] NULL   
    | expression [ NOT ] IN (subquery | expression [ ,...n ] )   
    | expression [ NOT ] EXISTS (subquery)     }   

引数Arguments

<search_condition><search_condition>
SELECT ステートメント、クエリ式、またはサブクエリの場合、結果セットに返す行の条件を指定します。Specifies the conditions for the rows returned in the result set for a SELECT statement, query expression, or subquery. UPDATE ステートメントの場合、更新する行を指定します。For an UPDATE statement, specifies the rows to be updated. DELETE ステートメントの場合、削除する行を指定します。For a DELETE statement, specifies the rows to be deleted. Transact-SQLTransact-SQL ステートメントの検索条件に含まれる述語の数に制限はありません。There is no limit to the number of predicates that can be included in a Transact-SQLTransact-SQL statement search condition.

<graph_search_pattern><graph_search_pattern>
グラフの一致パターンを指定します。Specifies the graph match pattern. この句の引数の詳細については、「MATCH (Transact-SQL)」を参照してくださいFor more information about the arguments for this clause, see MATCH (Transact-SQL)

NOTNOT
述語によって指定されたブール式を否定します。Negates the Boolean expression specified by the predicate. 詳細については、「NOT (Transact-SQL)」を参照してください。For more information, see NOT (Transact-SQL).

ANDAND
2 つの条件を結合し、両方の条件が真の場合に TRUE と評価します。Combines two conditions and evaluates to TRUE when both of the conditions are TRUE. 詳細については、「AND (Transact-SQL)」を参照してください。For more information, see AND (Transact-SQL).

OROR
2 つの条件を結合し、少なくとも片方の条件が真の場合に TRUE と評価します。Combines two conditions and evaluates to TRUE when either condition is TRUE. 詳細については、「OR (Transact-SQL)」を参照してください。For more information, see OR (Transact-SQL).

< predicate >< predicate >
TRUE、FALSE、または UNKNOWN を返す式です。Is an expression that returns TRUE, FALSE, or UNKNOWN.

式 (expression)expression
列名、定数、関数、変数、スカラー サブクエリ、または 1 つ以上の演算子やサブクエリで接続された列名、定数、関数の組み合わせです。Is a column name, a constant, a function, a variable, a scalar subquery, or any combination of column names, constants, and functions connected by an operator or operators, or a subquery. expression には CASE 式が含まれる場合もあります。The expression can also contain the CASE expression.

注意

Unicode ではない文字列定数と変数は、データベースの既定の照合順序に対応するコード ページを使用します。Non-Unicode string constants and variables use the code page that corresponds to the default collation of the database. コード ページの変換は、Unicode 以外の文字データのみで作業し、Unicode ではない文字データ型 charvarchar、および text を参照する場合に発生する可能性があります。Code page conversions can occur when working with only non-Unicode character data and referencing the non-Unicode character data types char, varchar, and text. SQL ServerSQL Server は、コード ページがデータベースの既定照合順序に対応するコード ページと異なる場合に、Unicode 以外の文字列定数および変数を、参照される列または COLLATE を使用して指定された列の照合順序に対応するコード ページに変換します。converts non-Unicode string constants and variables to the code page that corresponds to the collation of the referenced column or specified using COLLATE, if that code page is different than the code page that corresponds to the default collation of the database. 最適なマッピングが見つかった場合、新しいコード ページで見つからない文字はすべて類似した文字に変換されます。それ以外の場合は、既定の置換文字 "?" に変換されます。Any characters not found in the new code page will be translated to a similar character, if a best-fit mapping can be found, or else will be converted to the default replacement character of "?".

複数のコード ページを処理する場合、コード ページの変換を避けるために、文字定数の先頭に大文字の 'N' を付け、Unicode 変数を使用することができます。When working with multiple code pages, character constants can be prefixed with the uppercase letter 'N', and Unicode variables can be used, to avoid code page conversions.

=
2 つの式が等しいことを調べるのに使用する演算子です。Is the operator used to test the equality between two expressions.

<>
2 つの式が互いに等しくないという条件を調べるのに使用する演算子です。Is the operator used to test the condition of two expressions not being equal to each other.

!=!=
2 つの式が互いに等しくないという条件を調べるのに使用する演算子です。Is the operator used to test the condition of two expressions not being equal to each other.

>
一方の式がもう一方の式より大きいという条件を調べるのに使用する演算子です。Is the operator used to test the condition of one expression being greater than the other.

>=
一方の式がもう一方の式以上であるという条件を調べるのに使用する演算子です。Is the operator used to test the condition of one expression being greater than or equal to the other expression.

!>!>
一方の式がもう一方の式より大きくないという条件を調べるのに使用する演算子です。Is the operator used to test the condition of one expression not being greater than the other expression.

<
一方の式がもう一方の式より小さいという条件を調べるのに使用する演算子です。Is the operator used to test the condition of one expression being less than the other.

<=
一方の式がもう一方の式以下であるという条件を調べるのに使用する演算子です。Is the operator used to test the condition of one expression being less than or equal to the other expression.

!<!<
一方の式がもう一方の式より小さくないという条件を調べるのに使用する演算子です。Is the operator used to test the condition of one expression not being less than the other expression.

string_expressionstring_expression
文字列とワイルドカード文字から成る文字列です。Is a string of characters and wildcard characters.

[ NOT ] LIKE[ NOT ] LIKE
後続の文字列が、パターン照合で使用されます。Indicates that the subsequent character string is to be used with pattern matching. 詳細については、「LIKE (Transact-SQL)」を参照してください。For more information, see LIKE (Transact-SQL).

ESCAPE 'escape_ character'ESCAPE 'escape_ character'
ワイルドカードとして機能するのではなく、ワイルドカード文字そのものを文字列内で検索できます。Allows for a wildcard character to be searched for in a character string instead of functioning as a wildcard. escape_character は、ワイルドカード文字の前に付けてこの特別な使用方法を示す文字です。escape_character is the character that is put in front of the wildcard character to indicate this special use.

[ NOT ] BETWEEN[ NOT ] BETWEEN
両端を含む値の範囲を指定します。Specifies an inclusive range of values. 最初と最後の値を除外するには、AND を使用します。Use AND to separate the starting and ending values. 詳細については、「BETWEEN (Transact-SQL)」を参照してください。For more information, see BETWEEN (Transact-SQL).

IS [ NOT ] NULLIS [ NOT ] NULL
指定のキーワードに応じて、NULL 値または NULL 値以外の値の検索を指定します。Specifies a search for null values, or for values that are not null, depending on the keywords used. ビットごとの演算子や算術演算子を使う式は、オペランドの少なくとも 1 つが NULL であれば、NULL と評価されます。An expression with a bitwise or arithmetic operator evaluates to NULL if any one of the operands is NULL.

CONTAINSCONTAINS
文字ベースのデータを含む列に対して、単語または語句との完全一致検索またはあいまい (あいまい一致) 検索、特定の範囲内での近接検索、および重み付き検索を行います。Searches columns that contain character-based data for precise or less precise (fuzzy) matches to single words and phrases, the proximity of words within a certain distance of one another, and weighted matches. このオプションは、SELECT ステートメントでのみ使用できます。This option can only be used with SELECT statements. 詳細については、「CONTAINS (Transact-SQL)」を参照してください。For more information, see CONTAINS (Transact-SQL).

FREETEXTFREETEXT
文字ベースのデータを含む列で、述語内の文字の並びと正確に一致しなくても意味が合っている値を検索するための、単純形式の自然言語クエリを指定します。Provides a simple form of natural language query by searching columns that contain character-based data for values that match the meaning instead of the exact words in the predicate. このオプションは、SELECT ステートメントでのみ使用できます。This option can only be used with SELECT statements. 詳細については、「FREETEXT (Transact-SQL)」を参照してください。For more information, see FREETEXT (Transact-SQL).

[ NOT ] IN[ NOT ] IN
式がリストに含まれているかどうかに基づいて、式の検索を指定します。Specifies the search for an expression, based on whether the expression is included in or excluded from a list. 検索式には定数または列名を指定できます。またリストには、一般的にはサブクエリが指定されますが、一連の定数も指定できます。The search expression can be a constant or a column name, and the list can be a set of constants or, more typically, a subquery. 値のリストはかっこで囲んでください。Enclose the list of values in parentheses. 詳細については、「IN (Transact-SQL)」を参照してください。For more information, see IN (Transact-SQL).

subquerysubquery
制限付きの SELECT ステートメントと見なすことができます。また、SELECT ステートメントの中の <query_expression> に似ています。Can be considered a restricted SELECT statement and is similar to <query_expression> in the SELECT statement. ORDER BY 句および INTO キーワードは使用できません。The ORDER BY clause and the INTO keyword are not allowed. 詳細については、「SELECT (Transact-SQL)」を参照してください。For more information, see SELECT (Transact-SQL).

ALLALL
比較演算子およびサブクエリと共に使用します。Used with a comparison operator and a subquery. サブクエリで取得されたすべての値が比較演算子の要件を満たしている場合は、<predicate> に TRUE を返します。また、少なくとも 1 つの値が比較要件を満たしていない場合、またはサブクエリが外側のステートメントに行を返さなかった場合は、FALSE を返します。Returns TRUE for <predicate> when all values retrieved for the subquery satisfy the comparison operation, or FALSE when not all values satisfy the comparison or when the subquery returns no rows to the outer statement. 詳細については、「ALL (Transact-SQL)」を参照してください。For more information, see ALL (Transact-SQL).

{ SOME | ANY }{ SOME | ANY }
比較演算子およびサブクエリと共に使用します。Used with a comparison operator and a subquery. サブクエリで取得された値の少なくとも 1 つが比較演算子の要件を満たしている場合は、<predicate> に TRUE を返します。また、サブクエリの値がいずれも比較要件を満たしていない場合、またはサブクエリが外側のステートメントに行を返さなかった場合は、FALSE を返します。Returns TRUE for <predicate> when any value retrieved for the subquery satisfies the comparison operation, or FALSE when no values in the subquery satisfy the comparison or when the subquery returns no rows to the outer statement. それ以外の場合には、式は UNKNOWN と評価されます。Otherwise, the expression is UNKNOWN. 詳細については、「SOME | ANY (Transact-SQL)」を参照してください。For more information, see SOME | ANY (Transact-SQL).

EXISTSEXISTS
サブクエリと共に使用され、サブクエリによって返される行が存在するかどうかを調べます。Used with a subquery to test for the existence of rows returned by the subquery. 詳細については、「EXISTS (Transact-SQL)」を参照してください。For more information, see EXISTS (Transact-SQL).

RemarksRemarks

論理演算子の優先順位は、高い方から NOT、AND、OR です。The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR. かっこを使用することによって、検索条件におけるこれらの優先順位をオーバーライドすることができます。Parentheses can be used to override this precedence in a search condition. 論理演算子の評価順序は、クエリ オプティマイザーが行う選択によって異なる場合があります。The order of evaluation of logical operators can vary depending on choices made by the query optimizer. 論理演算子が論理値を操作する方法の詳細については、「AND (Transact-SQL)」、「OR (Transact-SQL)」、および「NOT (Transact-SQL)」を参照してください。For more information about how the logical operators operate on logic values, see AND (Transact-SQL), OR (Transact-SQL), and NOT (Transact-SQL).

使用例Examples

A.A. WHERE を LIKE および ESCAPE 構文と共に使用するUsing WHERE with LIKE and ESCAPE syntax

次の例では、LargePhotoFileName 列に文字列 green_ が含まれている行を検索します。_ がワイルドカード文字であるため、ESCAPE オプションを使用しています。The following example searches for the rows in which the LargePhotoFileName column has the characters green_, and uses the ESCAPE option because _ is a wildcard character. ESCAPE オプションを指定しないと、単語 green の後に _ 以外の 1 文字が続く文字列を含む description 列の値もクエリで検索してしまいます。Without specifying the ESCAPE option, the query would search for any description values that contain the word green followed by any single character other than the _ character.

USE AdventureWorks2012 ;  
GO  
SELECT *   
FROM Production.ProductPhoto  
WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a' ;  

B.B. WHERE および LIKE 構文を UNICODE データと共に使用するUsing WHERE and LIKE syntax with Unicode data

次の例では、WHERE 句を使用し、米国 (US) 国外を対象として、名前が Pa で始まる都市にあるすべての企業の住所を取得します。The following example uses the WHERE clause to retrieve the mailing address for any company that is outside the United States (US) and in a city whose name starts with Pa.

USE AdventureWorks2012 ;  
GO  
SELECT AddressLine1, AddressLine2, City, PostalCode, CountryRegionCode    
FROM Person.Address AS a  
JOIN Person.StateProvince AS s ON a.StateProvinceID = s.StateProvinceID  
WHERE CountryRegionCode NOT IN ('US')  
AND City LIKE N'Pa%' ;  

例: Azure SQL データ ウェアハウスAzure SQL Data Warehouse および Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL データ ウェアハウスAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

C.C. LIKE を含む WHERE を使用するUsing WHERE with LIKE

次の例では、LastName 列に and という文字列がある行を検索します。The following example searches for the rows in which the LastName column has the characters and.

-- Uses AdventureWorks  
  
SELECT EmployeeKey, LastName  
FROM DimEmployee  
WHERE LastName LIKE '%and%';  

D.D. WHERE および LIKE 構文を UNICODE データと共に使用するUsing WHERE and LIKE syntax with Unicode data

次の例では、WHERE 句を使用して LastName 列の Unicode 検索を実行します。The following example uses the WHERE clause to perform a Unicode search on the LastName column.

-- Uses AdventureWorks  
  
SELECT EmployeeKey, LastName  
FROM DimEmployee  
WHERE LastName LIKE N'%and%';  

参照See Also

集計関数 (Transact-SQL) Aggregate Functions (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
カーソル (Transact-SQL) Cursors (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
式 (Transact-SQL) Expressions (Transact-SQL)
FREETEXTTABLE (Transact-SQL) FREETEXTTABLE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
演算子 (Transact-SQL) Operators (Transact-SQL)
UPDATE (Transact-SQL)UPDATE (Transact-SQL)