Suchbedingung (Transact-SQL)Search Condition (Transact-SQL)

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Bezeichnet eine Kombination aus einem oder mehreren Prädikaten, die die logischen Operatoren AND, OR und NOT verwenden.Is a combination of one or more predicates that use the logical operators AND, OR, and NOT.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

-- 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)     }   

ArgumenteArguments

<search_condition><search_condition>
Gibt die Bedingungen für die Zeilen an, die im Resultset einer SELECT-Anweisung, eines Abfrageausdrucks oder einer Unterabfrage zurückgegeben werden sollen.Specifies the conditions for the rows returned in the result set for a SELECT statement, query expression, or subquery. Bei einer UPDATE-Anweisung gibt dieses Argument die Bedingungen für die Zeilen an, die aktualisiert werden sollen.For an UPDATE statement, specifies the rows to be updated. Bei einer DELETE-Anweisung gibt dieses Argument die Bedingungen für die Zeilen an, die gelöscht werden sollen.For a DELETE statement, specifies the rows to be deleted. Es gibt keine Begrenzung für die Anzahl der Prädikate, die in einer Suchbedingung einer Transact-SQLTransact-SQL-Anweisung enthalten sein können.There is no limit to the number of predicates that can be included in a Transact-SQLTransact-SQL statement search condition.

<Graph-Vergleichsmuster><graph_search_pattern>
Gibt das Graph-Vergleichsmuster an.Specifies the graph match pattern. Weitere Informationen zu den Argumenten für diese Klausel finden Sie unter MATCH (Transact-SQL).For more information about the arguments for this clause, see MATCH (Transact-SQL)

NICHTNOT
Negiert den vom Prädikat festgelegten booleschen Ausdruck.Negates the Boolean expression specified by the predicate. Weitere Informationen finden Sie unter NOT (Transact-SQL).For more information, see NOT (Transact-SQL).

ANDAND
Kombiniert zwei Bedingungen und gibt TRUE zurück, wenn beide Bedingungen TRUE sind.Combines two conditions and evaluates to TRUE when both of the conditions are TRUE. Weitere Informationen finden Sie unter AND (Transact-SQL).For more information, see AND (Transact-SQL).

oderOR
Kombiniert zwei Bedingungen und gibt TRUE zurück, wenn eine der Bedingungen TRUE ist.Combines two conditions and evaluates to TRUE when either condition is TRUE. Weitere Informationen finden Sie unter OR (Transact-SQL).For more information, see OR (Transact-SQL).

< predicate >< predicate >
Ein Ausdruck, der TRUE, FALSE oder UNKNOWN zurückgibt.Is an expression that returns TRUE, FALSE, or UNKNOWN.

expressionexpression
Ein Spaltenname, eine Konstante, eine Funktion, eine Variable, eine skalare Unterabfrage oder eine Kombination aus Spaltennamen, Konstanten und Funktionen, die durch einen Operator bzw. Operatoren oder eine Unterabfrage miteinander verbunden sind.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. Der Ausdruck kann auch den CASE-Ausdruck enthalten.The expression can also contain the CASE expression.

Hinweis

Nicht-Unicode-Zeichenfolgenkonstanten und -Variablen verwenden die Zeichenfolge in die Codepage, die der Standardsortierung der Datenbank entspricht.Non-Unicode string constants and variables use the code page that corresponds to the default collation of the database. Codepagekonvertierungen können auftreten, wenn nur Nicht-Unicode-Zeichendaten verwendet werden und auf die Nicht-Unicode-Zeichendatentypen char, varchar und text verwiesen wird.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 konvertiert Nicht-Unicode-Zeichenkonstanten und -Variablen in die Codepage, die der Sortierung der referenzierten Spalte entspricht oder die mit COLLATE angegeben ist, sofern sich diese Codepage von der Codepage unterscheidet, die der Standardsortierung der Datenbank entspricht.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. Zeichen, die in der neuen Codepage nicht gefunden werden, werden in ein ähnliches Zeichen übersetzt, falls eine optimierte Zuordnung gefunden wird. Andernfalls werden sie in das Standardersetzungszeichen "?" konvertiert.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 "?".

Bei Verwendung mehrerer Codepages kann Zeichenkonstanten der Großbuchstabe 'N' vorangestellt werden. Zudem können Unicode-Variablen verwendet werden, um Codepagekonvertierungen zu vermeiden.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.

=
Der Operator, mit dem die Gleichheit zwischen zwei Ausdrücken getestet wird.Is the operator used to test the equality between two expressions.

<>
Der Operator, mit dem die Bedingung zweier Ausdrücke getestet wird, die nicht gleich sindIs the operator used to test the condition of two expressions not being equal to each other.

!=!=
Der Operator, mit dem die Bedingung zweier Ausdrücke getestet wird, die nicht gleich sindIs the operator used to test the condition of two expressions not being equal to each other.

>
Der Operator, mit dem die Bedingung eines Ausdrucks getestet wird, der größer als der andere istIs the operator used to test the condition of one expression being greater than the other.

>=
Der Operator, mit dem die Bedingung eines Ausdrucks getestet wird, der größer oder gleich dem anderen Ausdruck istIs the operator used to test the condition of one expression being greater than or equal to the other expression.

!>!>
Der Operator, mit dem die Bedingung eines Ausdrucks getestet wird, der nicht größer als der andere Ausdruck istIs the operator used to test the condition of one expression not being greater than the other expression.

<
Der Operator, mit dem die Bedingung eines Ausdrucks getestet wird, der kleiner als der andere istIs the operator used to test the condition of one expression being less than the other.

<=
Der Operator, mit dem die Bedingung eines Ausdrucks getestet wird, der kleiner oder gleich dem anderen Ausdruck istIs the operator used to test the condition of one expression being less than or equal to the other expression.

!<!<
Der Operator, mit dem die Bedingung eines Ausdrucks getestet wird, der nicht kleiner als der andere Ausdruck istIs the operator used to test the condition of one expression not being less than the other expression.

string_expressionstring_expression
Eine Zeichenfolge mit Zeichen und PlatzhalterzeichenIs a string of characters and wildcard characters.

[ NOT ] LIKE[ NOT ] LIKE
Zeigt an, dass die nachfolgende Zeichenfolge in Mustervergleichen verwendet werden soll.Indicates that the subsequent character string is to be used with pattern matching. Weitere Informationen finden Sie unter LIKE (Transact-SQL).For more information, see LIKE (Transact-SQL).

ESCAPE 'escape_ character'ESCAPE 'escape_ character'
Ermöglicht einem Platzhalterzeichen, dass es in einer Zeichenfolge gesucht werden kann, statt als Platzhalter zu fungieren.Allows for a wildcard character to be searched for in a character string instead of functioning as a wildcard. escape_character ist das Zeichen, das vor das Platzhalterzeichen gesetzt wird, um diese besondere Verwendung anzugeben.escape_character is the character that is put in front of the wildcard character to indicate this special use.

[ NOT ] BETWEEN[ NOT ] BETWEEN
Gibt einen Inklusivbereich von Werten an.Specifies an inclusive range of values. Verwenden Sie AND, um den Anfangs- und den Endwert voneinander zu trennen.Use AND to separate the starting and ending values. Weitere Informationen finden Sie unter BETWEEN (Transact-SQL).For more information, see BETWEEN (Transact-SQL).

IS [ NOT ] NULLIS [ NOT ] NULL
Gibt eine Suche nach NULL-Werten oder nach Werten ungleich Null in Abhängigkeit von den verwendeten Schlüsselwörtern an.Specifies a search for null values, or for values that are not null, depending on the keywords used. Ein Ausdruck mit einem bitweisen oder arithmetischen Operator gibt NULL zurück, wenn einer der Operanden gleich NULL ist.An expression with a bitwise or arithmetic operator evaluates to NULL if any one of the operands is NULL.

CONTAINSCONTAINS
Sucht Spalten, die zeichenbasierte Daten für genaue oder ungenaue (Fuzzy-)Übereinstimmungen mit einzelnen Wörtern und Satzteilen enthalten, die innerhalb einer bestimmten Entfernung angrenzenden Wörter sowie gewichtete Übereinstimmungen.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. Diese Option kann nur in Verbindung mit SELECT-Anweisungen verwendet werden.This option can only be used with SELECT statements. Weitere Informationen finden Sie unter CONTAINS (Transact-SQL).For more information, see CONTAINS (Transact-SQL).

FREETEXTFREETEXT
Stellt eine einfache Form der Abfrage in natürlicher Sprache dar, indem Spalten mit zeichenbasierten Daten im Hinblick auf Werte untersucht werden, die mit der Bedeutung übereinstimmen, statt dass die genauen Wörter im Prädikat gesucht werden.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. Diese Option kann nur in Verbindung mit SELECT-Anweisungen verwendet werden.This option can only be used with SELECT statements. Weitere Informationen finden Sie unter FREETEXT (Transact-SQL).For more information, see FREETEXT (Transact-SQL).

[ NOT ] IN[ NOT ] IN
Gibt die Suche nach einem Ausdruck an, die auf dem Einschluss oder Ausschluss des Ausdrucks in eine bzw. aus einer Liste basiert.Specifies the search for an expression, based on whether the expression is included in or excluded from a list. Bei dem Suchausdruck kann es sich um eine Konstante oder einen Spaltennamen handeln. Die Liste kann eine Reihe von Konstanten oder in der Regel eine Unterabfrage sein.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. Schließen Sie die Liste der Werte in Klammern ein.Enclose the list of values in parentheses. Weitere Informationen finden Sie unter IN (Transact-SQL).For more information, see IN (Transact-SQL).

subquerysubquery
Kann als eine eingeschränkte SELECT-Anweisung betrachtet werden, die <query_expresssion> in der SELECT-Anweisung ähnelt.Can be considered a restricted SELECT statement and is similar to <query_expression> in the SELECT statement. Die ORDER BY-Klausel und das INTO-Schlüsselwort sind nicht zulässig.The ORDER BY clause and the INTO keyword are not allowed. Weitere Informationen finden Sie unter SELECT (Transact-SQL).For more information, see SELECT (Transact-SQL).

ALLALL
Wird mit einem Vergleichsoperator und einer Unterabfrage verwendet.Used with a comparison operator and a subquery. Gibt TRUE für <predicate> zurück, wenn alle für die Unterabfrage abgerufenen Werte die Vergleichsoperation erfüllen, bzw. FALSE, wenn nicht alle Werte dem Vergleich entsprechen oder die Unterabfrage keine Zeilen an die äußere Anweisung zurückgibt.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. Weitere Informationen finden Sie unter ALL (Transact-SQL).For more information, see ALL (Transact-SQL).

{ SOME | ANY }{ SOME | ANY }
Wird mit einem Vergleichsoperator und einer Unterabfrage verwendet.Used with a comparison operator and a subquery. Gibt TRUE für <predicate> zurück, wenn einer der für die Unterabfrage abgerufenen Werte die Vergleichsoperation erfüllt, bzw. FALSE, wenn keine Werte dem Vergleich entsprechen oder die Unterabfrage keine Zeilen an die äußere Anweisung zurückgibt.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. Der Ausdruck ist andernfalls UNKNOWN.Otherwise, the expression is UNKNOWN. Weitere Informationen finden Sie unter SOME | ANY (Transact-SQL).For more information, see SOME | ANY (Transact-SQL).

EXISTSEXISTS
Wird mit einer Unterabfrage verwendet, um Tests im Hinblick auf das Vorhandensein von Zeilen durchzuführen, die von der Unterabfrage zurückgegeben wurden.Used with a subquery to test for the existence of rows returned by the subquery. Weitere Informationen finden Sie unter EXISTS (Transact-SQL).For more information, see EXISTS (Transact-SQL).

BemerkungenRemarks

Die Rangfolge der logischen Operatoren beginnt mit NOT (höchster Operator). Darauf folgt AND und anschließend OR.The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR. Mithilfe von Klammern kann diese Rangfolge in einer Suchbedingung überschrieben werden.Parentheses can be used to override this precedence in a search condition. Die Reihenfolge der Auswertung logischer Operatoren kann variieren, abhängig von den vom Abfrageoptimierer gewählten Optionen.The order of evaluation of logical operators can vary depending on choices made by the query optimizer. Weitere Informationen zur Verarbeitung von logischen Werten durch logische Operatoren finden Sie unter AND (Transact-SQL), OR (Transact-SQL) und 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).

BeispieleExamples

A.A. Verwenden von WHERE mit der LIKE- und ESCAPE-SyntaxUsing WHERE with LIKE and ESCAPE syntax

Im folgenden Beispiel wird nach den Zeilen gesucht, in denen die LargePhotoFileName-Spalte die Zeichen green_ aufweist, und es wird die ESCAPE-Option verwendet, da es sich bei _ um ein Platzhalterzeichen handelt.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. Ohne Angeben der ESCAPE-Option würde die Abfrage nach allen Beschreibungswerten suchen, die das Wort green gefolgt von einem anderen Zeichen als _ enthalten.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. Verwenden der WHERE- und LIKE-Syntax mit UnicodedatenUsing WHERE and LIKE syntax with Unicode data

Im folgenden Beispiel wird die WHERE-Klausel zum Abrufen der Postanschrift für Unternehmen außerhalb der USA (US) in einer Stadt, deren Namen mit Pa beginnt, abgerufen.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%' ;  

Beispiele: Azure SQL Data WarehouseAzure SQL Data Warehouse und Parallel Data WarehouseParallel Data Warehouse.Examples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

C.C. Verwenden von WHERE mit LIKEUsing WHERE with LIKE

Im folgenden Beispiel wird nach den Zeilen gesucht, in denen die LastName-Spalte die Zeichen and aufweist.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. Verwenden der WHERE- und LIKE-Syntax mit UnicodedatenUsing WHERE and LIKE syntax with Unicode data

Im folgenden Beispiel wird die WHERE-Klausel verwendet, um einen Unicode-Suchvorgang in der LastName-Spalte durchzuführen.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%';  

Weitere InformationenSee Also

Aggregate Functions (Transact-SQL) (Aggregatfunktionen (Transact-SQL)) Aggregate Functions (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
Cursors (Transact-SQL) Cursors (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
Ausdrücke (Transact-SQL) Expressions (Transact-SQL)
FREETEXTTABLE (Transact-SQL) FREETEXTTABLE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
Operatoren (Transact-SQL) Operators (Transact-SQL)
UPDATE (Transact-SQL)UPDATE (Transact-SQL)