Condizione di ricerca (Transact-SQL)Search Condition (Transact-SQL)

SI APPLICA A: sìSQL Server (a partire dalla versione 2008) sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Combinazione di uno o più predicati tramite gli operatori logici AND, OR e NOT.Is a combination of one or more predicates that use the logical operators AND, OR, and NOT.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

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

ArgomentiArguments

<search_condition><search_condition>
Specifica le condizioni per le righe restituite nel set dei risultati di un'istruzione SELECT, di un'espressione di query o di una sottoquery.Specifies the conditions for the rows returned in the result set for a SELECT statement, query expression, or subquery. Per un'istruzione UPDATE specifica le righe da aggiornare.For an UPDATE statement, specifies the rows to be updated. Per un'istruzione DELETE specifica le righe da eliminare.For a DELETE statement, specifies the rows to be deleted. Non sussiste alcun limite per il numero di predicati che è possibile includere in una condizione di ricerca di un'istruzione 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>
Specifica il modello di corrispondenza del grafico.Specifies the graph match pattern. Per altre informazioni sugli argomenti di questa clausola, vedere MATCH (Transact-SQL)For more information about the arguments for this clause, see MATCH (Transact-SQL)

NOTNOT
Nega l'espressione booleana specificata dal predicato.Negates the Boolean expression specified by the predicate. Per altre informazioni, vedere NOT (Transact-SQL).For more information, see NOT (Transact-SQL).

ANDAND
Combina due condizioni e restituisce TRUE quando entrambe le condizioni sono TRUE.Combines two conditions and evaluates to TRUE when both of the conditions are TRUE. Per altre informazioni, vedere AND (Transact-SQL).For more information, see AND (Transact-SQL).

oOR
Combina due condizioni e restituisce TRUE quando una delle due condizioni è TRUE.Combines two conditions and evaluates to TRUE when either condition is TRUE. Per altre informazioni, vedere OR (Transact-SQL).For more information, see OR (Transact-SQL).

< predicate >< predicate >
Espressione che restituisce TRUE, FALSE o UNKNOWN.Is an expression that returns TRUE, FALSE, or UNKNOWN.

expressionexpression
Nome di colonna, costante, funzione, variabile, sottoquery scalare o qualsiasi combinazione di costanti, funzioni e nomi di colonna collegati da uno o più operatori oppure da una sottoquery.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. L'espressione può inoltre includere l'espressione CASE.The expression can also contain the CASE expression.

Nota

Le costanti e le variabili delle stringhe diverse da Unicode usano la tabella codici corrispondente alle regole di confronto predefinite del database.Non-Unicode string constants and variables use the code page that corresponds to the default collation of the database. Le conversioni della tabella codici possono verificarsi quando si usano unicamente dati di tipo carattere non Unicode e si fa riferimento ai tipi di dati carattere non Unicode char, varchar e 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 converte le costanti e le variabili delle stringhe non Unicode nella tabella codici che corrisponde alle regole di confronto della colonna con riferimenti o specificati mediante COLLATE, se tale tabella codici è diversa da quella che corrisponde a regole di confronto predefinite del database.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. Tutti i caratteri non trovati nella nuova tabella codici verranno convertiti in un carattere simile, se è reperibile un mapping di migliore approssimazione, altrimenti verrà convertito nel carattere di sostituzione predefinito di "?".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 "?".

Quando si usano più tabelle codici, le costanti carattere possono essere precedute dalla lettera maiuscola 'N ' e possono essere usate variabili Unicode, per evitare conversioni delle tabelle codici.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.

=
Operatore utilizzato per verificare l'uguaglianza di due espressioni.Is the operator used to test the equality between two expressions.

<>
Operatore utilizzato per verificare la disuguaglianza di due espressioni.Is the operator used to test the condition of two expressions not being equal to each other.

!=!=
Operatore utilizzato per verificare la disuguaglianza di due espressioni.Is the operator used to test the condition of two expressions not being equal to each other.

>
Operatore utilizzato per verificare che un'espressione sia maggiore di un'altra.Is the operator used to test the condition of one expression being greater than the other.

>=
Operatore utilizzato per verificare che un'espressione sia maggiore o uguale a un'altra.Is the operator used to test the condition of one expression being greater than or equal to the other expression.

!>!>
Operatore utilizzato per verificare che un'espressione non sia maggiore di un'altra.Is the operator used to test the condition of one expression not being greater than the other expression.

<
Operatore utilizzato per verificare che un'espressione sia minore di un'altra.Is the operator used to test the condition of one expression being less than the other.

<=
Operatore utilizzato per verificare che un'espressione sia minore o uguale a un'altra.Is the operator used to test the condition of one expression being less than or equal to the other expression.

!<!<
Operatore utilizzato per verificare che un'espressione non sia minore di un'altra.Is the operator used to test the condition of one expression not being less than the other expression.

string_expressionstring_expression
Stringa di caratteri e caratteri jolly.Is a string of characters and wildcard characters.

[ NOT ] LIKE[ NOT ] LIKE
Indica che la successiva stringa di caratteri deve essere utilizzata come criterio di ricerca.Indicates that the subsequent character string is to be used with pattern matching. Per altre informazioni, vedere LIKE (Transact-SQL).For more information, see LIKE (Transact-SQL).

ESCAPE 'escape_ character'ESCAPE 'escape_ character'
Consente la ricerca di un carattere jolly come carattere effettivo in una stringa di caratteri, ignorando la funzionalità di carattere jolly.Allows for a wildcard character to be searched for in a character string instead of functioning as a wildcard. escape_character è il carattere inserito davanti al carattere jolly per specificarne l'utilizzo speciale.escape_character is the character that is put in front of the wildcard character to indicate this special use.

[ NOT ] BETWEEN[ NOT ] BETWEEN
Specifica un intervallo di valori inclusivo.Specifies an inclusive range of values. Utilizzare l'operatore AND per separare il valore iniziale da quello finale.Use AND to separate the starting and ending values. Per altre informazioni, vedere BETWEEN (Transact-SQL).For more information, see BETWEEN (Transact-SQL).

IS [ NOT ] NULLIS [ NOT ] NULL
Specifica una ricerca di valori Null o non Null, a seconda delle parole chiave utilizzate.Specifies a search for null values, or for values that are not null, depending on the keywords used. Un'espressione con un operatore bit per bit o aritmetico restituisce NULL se uno degli operandi è NULL.An expression with a bitwise or arithmetic operator evaluates to NULL if any one of the operands is NULL.

CONTAINSCONTAINS
Esegue ricerche in colonne che includono dati di tipo carattere per individuare corrispondenze esatte o fuzzy (meno esatte) di singole parole e frasi, la prossimità delle parole separate da una distanza massima specifica e le corrispondenze ponderate.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. È possibile utilizzare questa opzione solo con istruzioni SELECT.This option can only be used with SELECT statements. Per altre informazioni, vedere CONTAINS (Transact-SQL).For more information, see CONTAINS (Transact-SQL).

FREETEXTFREETEXT
Implementa un tipo semplice di query in linguaggio naturale per l'esecuzione di ricerche in colonne che includono dati di tipo carattere, per individuare valori che corrispondano al significato piuttosto che alle parole esatte del predicato.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. È possibile utilizzare questa opzione solo con istruzioni SELECT.This option can only be used with SELECT statements. Per altre informazioni, vedere FREETEXT (Transact-SQL).For more information, see FREETEXT (Transact-SQL).

[ NOT ] IN[ NOT ] IN
Specifica la ricerca di un'espressione in base alla presenza o meno di tale espressione in un elenco.Specifies the search for an expression, based on whether the expression is included in or excluded from a list. L'espressione di ricerca può essere una costante o un nome di colonna. L'elenco può essere un set di costanti o, più comunemente, una sottoquery.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. Racchiudere l'elenco di valori tra parentesi.Enclose the list of values in parentheses. Per altre informazioni, vedere IN (Transact-SQL).For more information, see IN (Transact-SQL).

subquerysubquery
Questo argomento può essere considerato un'istruzione SELECT con restrizioni ed è simile a <query_expression> nell'istruzione SELECT.Can be considered a restricted SELECT statement and is similar to <query_expression> in the SELECT statement. La clausola ORDER BY e la parola chiave INTO non sono consentite.The ORDER BY clause and the INTO keyword are not allowed. Per altre informazioni, vedere SELECT (Transact-SQL).For more information, see SELECT (Transact-SQL).

ALLALL
Utilizzato con un operatore di confronto e una sottoquery.Used with a comparison operator and a subquery. Restituisce TRUE per <predicate> se tutti i valori recuperati per la sottoquery soddisfano l'operazione di confronto, restituisce FALSE se non tutti i valori soddisfano il criterio di confronto oppure la sottoquery non restituisce righe all'istruzione esterna.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. Per altre informazioni, vedere ALL (Transact-SQL).For more information, see ALL (Transact-SQL).

{ SOME | ANY }{ SOME | ANY }
Utilizzato con un operatore di confronto e una sottoquery.Used with a comparison operator and a subquery. Restituisce TRUE per <predicate> se almeno un valore recuperato per la sottoquery soddisfa l'operazione di confronto, restituisce FALSE se nessun valore della sottoquery soddisfa il criterio di confronto oppure la sottoquery non restituisce righe all'istruzione esterna.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. Negli altri casi, l'espressione è UNKNOWN.Otherwise, the expression is UNKNOWN. Per altre informazioni, vedere SOME | ANY (Transact-SQL).For more information, see SOME | ANY (Transact-SQL).

EXISTSEXISTS
Utilizzato con una sottoquery per verificare l'esistenza delle righe restituite dalla sottoquery.Used with a subquery to test for the existence of rows returned by the subquery. Per altre informazioni, vedere EXISTS (Transact-SQL).For more information, see EXISTS (Transact-SQL).

RemarksRemarks

L'ordine di precedenza degli operatori logici prevede NOT come operatore con precedenza massima, seguito da AND e quindi da OR.The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR. È possibile utilizzare le parentesi per ignorare tale ordine di precedenza in una condizione di ricerca.Parentheses can be used to override this precedence in a search condition. L'ordine di valutazione degli operatori logici può variare a seconda delle scelte effettuate da Query Optimizer.The order of evaluation of logical operators can vary depending on choices made by the query optimizer. Per altre informazioni sul funzionamento degli operatori logici applicati a valori logici, vedere AND (Transact-SQL), OR (Transact-SQL) e 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).

EsempiExamples

A.A. Utilizzo della clausola WHERE con la sintassi LIKE ed ESCAPEUsing WHERE with LIKE and ESCAPE syntax

Nell'esempio seguente viene eseguita una ricerca delle righe in cui la colonna LargePhotoFileName contiene i caratteri green_ e si usa l'opzione ESCAPE perché _ è un carattere jolly.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. Se non si specifica l'opzione ESCAPE, la query esegue una ricerca di qualsiasi valore di descrizione contenente la parola green seguita da qualsiasi singolo carattere diverso dal carattere _ .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. Utilizzo della clausola WHERE e della sintassi LIKE con dati UnicodeUsing WHERE and LIKE syntax with Unicode data

Nell'esempio seguente viene utilizzata la clausola WHERE per recuperare l'indirizzo postale delle società con sede al di fuori degli Stati Uniti (US) e in città il cui nome inizia con 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%' ;  

Esempi: Azure SQL Data WarehouseAzure SQL Data Warehouse e Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

C.C. Utilizzo della clausola WHERE con LIKEUsing WHERE with LIKE

Nell'esempio seguente viene eseguita una ricerca delle righe in cui la colonna LastName contiene i caratteri 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. Utilizzo della clausola WHERE e della sintassi LIKE con dati UnicodeUsing WHERE and LIKE syntax with Unicode data

L'esempio seguente usa la clausola WHERE per eseguire una ricerca Unicode nella colonna LastName.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%';  

Vedere ancheSee Also

Funzioni di aggregazione (Transact-SQL) Aggregate Functions (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
Cursori (Transact-SQL) Cursors (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
Espressioni (Transact-SQL) Expressions (Transact-SQL)
FREETEXTTABLE (Transact-SQL) FREETEXTTABLE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
Operatori (Transact-SQL) Operators (Transact-SQL)
UPDATE (Transact-SQL)UPDATE (Transact-SQL)