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 ANDlogici , ORe 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, FALSEo 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 Nmaiuscola 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%';