Condizione di ricerca (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric
Combinazione di uno o più predicati che usano gli operatori AND
logici , OR
e NOT
.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
Sintassi per SQL Server, database SQL di Azure e Istanza gestita di SQL di Azure.
<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
| expression IS [ NOT ] DISTINCT FROM
| 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
Sintassi per Azure Synapse Analytics e 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)
}
Argomenti
<search_condition>
Specifica le condizioni per le righe restituite nel set di risultati per un'istruzione, un'espressione SELECT
di query o una sottoquery. Per un'istruzione UPDATE
, specifica le righe da aggiornare. Per un'istruzione DELETE
, specifica le righe da eliminare. Non esiste alcun limite al numero di predicati che possono essere inclusi in una condizione di ricerca di istruzioni Transact-SQL.
<graph_search_pattern>
Specifica il modello di corrispondenza del grafico. Per altre informazioni sugli argomenti per questa clausola, vedere MATCH
NOT
Nega l'espressione booleana specificata dal predicato. Per altre informazioni, vedere NOT.
E
Combina due condizioni e restituisce TRUE
quando entrambe le condizioni sono TRUE
. Per altre informazioni, vedere AND.
OPPURE
Combina due condizioni e restituisce TRUE
quando una delle due condizioni è TRUE
. Per altre informazioni, vedere OR.
<predicate>
Espressione che restituisce TRUE
, FALSE
o UNKNOWN
. Per altre informazioni, vedere Predicates.
expression
Specifica un nome di colonna, una costante, una funzione, una variabile, una sottoquery scalare o qualsiasi combinazione di nomi di colonna, costanti e funzioni connesse da un operatore o operatori o da una sottoquery. L'espressione può contenere anche l'espressione CASE
.
Le costanti e le variabili delle stringhe diverse da Unicode usano la tabella codici corrispondente alle regole di confronto predefinite del 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. SQL Server converte costanti e variabili stringa non Unicode nella tabella codici che corrisponde alle regole di confronto della colonna a cui si fa riferimento o specificate utilizzando COLLATE
, se tale tabella codici è diversa dalla tabella codici corrispondente alle regole di confronto predefinite del database. Tutti i caratteri non trovati nella nuova tabella codici vengono convertiti in un carattere simile se è possibile trovare un mapping ottimale oppure vengono convertiti nel carattere di sostituzione predefinito di ?
.
Quando si usano più tabelle codici, è possibile usare le costanti carattere con la lettera N
maiuscola e le variabili Unicode per evitare conversioni della tabella codici.
=
operatore
Operatore utilizzato per verificare l'uguaglianza tra due espressioni.
<>
operatore
Operatore utilizzato per testare la condizione di due espressioni che non sono uguali tra loro.
!=
operatore
Operatore utilizzato per testare la condizione di due espressioni che non sono uguali tra loro.
>
operatore
Operatore utilizzato per testare la condizione di un'espressione maggiore dell'altra.
>=
operatore
Operatore utilizzato per testare la condizione di un'espressione maggiore o uguale all'altra espressione.
!>
operatore
Operatore utilizzato per testare la condizione di un'espressione che non è maggiore dell'altra espressione.
<
operatore
Operatore utilizzato per testare la condizione di un'espressione minore dell'altra.
<=
operatore
Operatore utilizzato per testare la condizione di un'espressione minore o uguale all'altra espressione.
!<
operatore
Operatore utilizzato per testare la condizione di un'espressione che non è minore dell'altra espressione.
string_expression
Stringa di caratteri e caratteri jolly.
[ NOT ] COME
Indica che la successiva stringa di caratteri deve essere utilizzata come criterio di ricerca. Per altre informazioni, vedere LIKE.
CARATTERE ESCAPE 'escape_'
Consente la ricerca di un carattere jolly come carattere effettivo in una stringa di caratteri, ignorando la funzionalità di carattere jolly. escape_character è il carattere inserito davanti al carattere jolly per specificarne l'utilizzo speciale.
[ NOT ] TRA
Specifica un intervallo di valori inclusivo. Usare AND
per separare i valori iniziali e finali. Per altre informazioni, vedere BETWEEN.
IS [ NOT ] NULL
Specifica una ricerca di valori Null o valori che non sono Null, a seconda delle parole chiave usate. Un'espressione con un operatore bit per bit o aritmetico restituisce NULL
se uno degli operandi è NULL
.
IS [ NOT ] DISTINCT FROM
Confronta l'uguaglianza di due espressioni e garantisce un risultato true o false, anche se uno o entrambi gli operandi sono NULL
. Per altre informazioni, vedere IS [NOT] DISTINCT FROM (Transact-SQL).
CONTAINS
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. Questa opzione può essere usata solo con SELECT
le istruzioni . Per altre informazioni, vedere CONTAINS.
FREETEXT
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. Questa opzione può essere usata solo con SELECT
le istruzioni . Per altre informazioni, vedere FREETEXT.
[ NOT ] IN
Specifica la ricerca di un'espressione in base alla presenza o meno di tale espressione in un elenco. 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. Racchiudere l'elenco di valori tra parentesi. Per altre informazioni, vedere IN.
subquery
Può essere considerata un'istruzione con restrizioni SELECT
ed è simile a <query_expression>
nell'istruzione SELECT
. La ORDER BY
clausola e la INTO
parola chiave non sono consentite. Per altre informazioni, vedere SELECT.
ALL
Utilizzato con un operatore di confronto e una sottoquery. Restituisce TRUE
per <predicate>
quando tutti i valori recuperati per la sottoquery soddisfano l'operazione di confronto o FALSE
quando non tutti i valori soddisfano il confronto o quando la sottoquery non restituisce righe all'istruzione esterna. Per altre informazioni, vedere ALL.
{ SOME | ANY }
Utilizzato con un operatore di confronto e una sottoquery. Restituisce TRUE
per <predicate>
quando un valore recuperato per la sottoquery soddisfa l'operazione di confronto o FALSE
quando nessun valore nella sottoquery soddisfa il confronto o quando la sottoquery non restituisce righe all'istruzione esterna. In caso contrario, l'espressione è UNKNOWN
. Per altre informazioni, vedere SOME | ANY.
EXISTS
Utilizzato con una sottoquery per verificare l'esistenza delle righe restituite dalla sottoquery. Per altre informazioni, vedere EXISTS.
Osservazioni:
L'ordine di precedenza degli operatori logici prevede NOT
come operatore con precedenza massima, seguito da AND
e quindi da OR
. È possibile utilizzare le parentesi per ignorare tale ordine di precedenza in una condizione di ricerca. L'ordine di valutazione degli operatori logici può variare a seconda delle scelte effettuate da Query Optimizer. Per altre informazioni sul funzionamento degli operatori logici sui valori della logica, vedere AND, OR e NOT.
Esempi
Gli esempi di codice Transact-SQL in questo articolo utilizzano il database campione AdventureWorks2022
o AdventureWorksDW2022
, che è possibile scaricare dalla home page di Esempi di Microsoft SQL Server e progetti collettivi.
R. Usare WHERE con la sintassi LIKE e ESCAPE
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. Se non si specifica l'opzione ESCAPE
, la query cerca i valori di descrizione che contengono la parola green
seguita da un singolo carattere diverso dal _
carattere.
USE AdventureWorks2022;
GO
SELECT *
FROM Production.ProductPhoto
WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a';
B. Usare la sintassi WHERE e LIKE con i dati Unicode
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
.
USE AdventureWorks2022;
GO
SELECT AddressLine1,
AddressLine2,
City,
PostalCode,
CountryRegionCode
FROM Person.Address AS a
INNER JOIN Person.StateProvince AS s
ON a.StateProvinceID = s.StateProvinceID
WHERE CountryRegionCode NOT IN ('US')
AND City LIKE N'Pa%';
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)
C. Usare WHERE con LIKE
Nell'esempio seguente viene eseguita una ricerca delle righe in cui la colonna LastName
contiene i caratteri and
.
-- Uses AdventureWorks
SELECT EmployeeKey,
LastName
FROM DimEmployee
WHERE LastName LIKE '%and%';
D. Usare la sintassi WHERE e LIKE con i dati Unicode
L'esempio seguente usa la clausola WHERE
per eseguire una ricerca Unicode nella colonna LastName
.
-- Uses AdventureWorks
SELECT EmployeeKey,
LastName
FROM DimEmployee
WHERE LastName LIKE N'%and%';