Delen via


Zoekvoorwaarde (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Een combinatie van een of meer predicaten die gebruikmaken van de logische operators AND, ORen NOT.

Transact-SQL syntaxis-conventies

Syntax

Syntaxis voor SQL Server, Azure SQL Database en Azure SQL Managed Instance.

<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

Syntaxis voor Azure Synapse Analytics en 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>

Hiermee geeft u de voorwaarden op voor de rijen die worden geretourneerd in de resultatenset voor een SELECT instructie, query-expressie of subquery. Voor een UPDATE instructie geeft u de rijen op die moeten worden bijgewerkt. Voor een DELETE instructie geeft u de rijen op die moeten worden verwijderd. Er is geen limiet voor het aantal predicaten dat kan worden opgenomen in een Transact-SQL instructiezoekvoorwaarde.

<graph_search_pattern>

Hiermee geeft u het patroon van de grafiekovereenkomst op. Zie VERGELIJKEN voor meer informatie over de argumenten voor deze component

NOT

Negeert de Boole-expressie die is opgegeven door het predicaat. Zie NIET voor meer informatie.

AND

Combineert twee voorwaarden en evalueert naar TRUE wanneer beide voorwaarden zijn TRUE. Zie AND voor meer informatie.

OR

Combineert twee voorwaarden en evalueert naar TRUE wanneer een van beide voorwaarden is TRUE. Zie OR voor meer informatie.

<predicate>

Een expressie die retourneert TRUE, FALSEof UNKNOWN. Zie Predicaten voor meer informatie.

expression

Hiermee geeft u een kolomnaam, een constante, een functie, een variabele, een scalaire subquery of een combinatie van kolomnamen, constanten en functies op die zijn verbonden door een operator of operator of een subquery. De expressie kan ook de CASE expressie bevatten.

Niet-Unicode-tekenreeksconstanten en -variabelen gebruiken de codepagina die overeenkomt met de standaardsortering van de database. Conversies van codepagina's kunnen optreden wanneer u alleen niet-Unicode-tekengegevens gebruikt en verwijst naar het teken teken,de varchar en de tekst van het niet-Unicode-tekentype. SQL Server converteert niet-Unicode-tekenreeksconstanten en -variabelen naar de codepagina die overeenkomt met de sortering van de kolom waarnaar wordt verwezen of als deze COLLATEcodepagina verschilt van de codepagina die overeenkomt met de standaardsortering van de database. Tekens die niet op de nieuwe codepagina worden gevonden, worden omgezet in een vergelijkbaar teken als een best passende toewijzing kan worden gevonden, of worden geconverteerd naar het standaard vervangende teken van ?.

Wanneer u met meerdere codepagina's werkt, kunnen tekenconstanten worden voorafgegaan door de hoofdletter Nen kunnen Unicode-variabelen worden gebruikt om codepaginaconversies te voorkomen.

= bediener

De operator die wordt gebruikt om de gelijkheid tussen twee expressies te testen.

<> bediener

De operator die wordt gebruikt om de voorwaarde van twee expressies te testen die niet gelijk zijn aan elkaar.

!= bediener

De operator die wordt gebruikt om de voorwaarde van twee expressies te testen die niet gelijk zijn aan elkaar.

> bediener

De operator die wordt gebruikt om de voorwaarde van een expressie te testen die groter is dan de andere.

>= bediener

De operator die wordt gebruikt om de voorwaarde van een expressie te testen die groter is dan of gelijk is aan de andere expressie.

!> bediener

De operator die wordt gebruikt om de voorwaarde van één expressie te testen die niet groter is dan de andere expressie.

< bediener

De operator die wordt gebruikt om de voorwaarde van één expressie te testen die kleiner is dan de andere expressie.

<= bediener

De operator die wordt gebruikt om de voorwaarde van een expressie te testen die kleiner is dan of gelijk is aan de andere expressie.

!< bediener

De operator die wordt gebruikt om de voorwaarde van één expressie te testen die niet kleiner is dan de andere expressie.

string_expression

Een tekenreeks en jokertekens.

[ NIET ] ALS

Geeft aan dat de volgende tekenreeks moet worden gebruikt met patroonkoppeling. Zie LIKE voor meer informatie.

ESCAPE-teken 'escape_'

Hiermee kan een jokerteken worden gezocht in een tekenreeks in plaats van als jokerteken. escape_character is het teken dat vóór het jokerteken wordt geplaatst om dit speciale gebruik aan te geven.

[ NIET ] TUSSEN

Hiermee geeft u een inclusief waardenbereik op. Gebruik AND dit om de begin- en eindwaarden te scheiden. Zie BETWEEN voor meer informatie.

IS [ NIET ] NULL

Hiermee geeft u een zoekopdracht op naar null-waarden of voor waarden die niet null zijn, afhankelijk van de gebruikte trefwoorden. Een expressie met een bitsgewijze of rekenkundige operator evalueert of NULL een van de operanden is NULL.

IS [ NIET ] UNIEK VAN

Vergelijkt de gelijkheid van twee expressies en garandeert een waar of onwaar resultaat, zelfs als een of beide operanden zijn NULL. Voor meer informatie, zie IS [NIET] DISTINCT FROM (Transact-SQL).

CONTAINS

Hiermee wordt gezocht naar kolommen die gegevens op basis van tekens bevatten voor nauwkeurige of minder nauwkeurige (fuzzy) overeenkomsten met enkele woorden en woordgroepen, de nabijheid van woorden binnen een bepaalde afstand van elkaar en gewogen overeenkomsten. Deze optie kan alleen worden gebruikt met SELECT instructies. Zie CONTAINS voor meer informatie.

FREETEXT

Biedt een eenvoudige vorm van query's in natuurlijke taal door kolommen te doorzoeken die op tekens gebaseerde gegevens bevatten voor waarden die overeenkomen met de betekenis in plaats van de exacte woorden in het predicaat. Deze optie kan alleen worden gebruikt met SELECT instructies. Zie FREETEXT voor meer informatie.

[ NIET ] IN

Hiermee geeft u het zoeken naar een expressie op, op basis van of de expressie is opgenomen in of uitgesloten van een lijst. De zoekexpressie kan een constante of kolomnaam zijn en de lijst kan een set constanten zijn of, meestal, een subquery. Plaats de lijst met waarden tussen haakjes. Zie IN voor meer informatie.

subquery

Kan worden beschouwd als een beperkte SELECT instructie en is vergelijkbaar met <query_expression> in de SELECT instructie. De ORDER BY component en het INTO trefwoord zijn niet toegestaan. Zie SELECT voor meer informatie.

ALL

Wordt gebruikt met een vergelijkingsoperator en een subquery. Retourneert TRUE wanneer <predicate> alle waarden die zijn opgehaald voor de subquery voldoen aan de vergelijkingsbewerking, of FALSE wanneer niet alle waarden voldoen aan de vergelijking of wanneer de subquery geen rijen retourneert naar de buitenste instructie. Zie ALL voor meer informatie.

{ SOMMIGE | ANY }

Wordt gebruikt met een vergelijkingsoperator en een subquery. Retourneert TRUE<predicate> wanneer een waarde die is opgehaald voor de subquery voldoet aan de vergelijkingsbewerking, of FALSE wanneer geen waarden in de subquery voldoen aan de vergelijking of wanneer de subquery geen rijen retourneert naar de buitenste instructie. Anders is UNKNOWNde expressie . Zie SOME | voor meer informatie ELKE.

EXISTS

Wordt gebruikt met een subquery om te testen op het bestaan van rijen die worden geretourneerd door de subquery. Zie EXISTS voor meer informatie.

Remarks

De volgorde van prioriteit voor de logische operators is NOT (hoogste), gevolgd door AND, gevolgd door OR. Haakjes kunnen worden gebruikt om deze prioriteit in een zoekvoorwaarde te overschrijven. De volgorde van de evaluatie van logische operators kan variëren, afhankelijk van de keuzes die door de queryoptimalisatie zijn gemaakt. Zie AND, OR en NOT voor meer informatie over de werking van logische operators op logische waarden.

Examples

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022 of AdventureWorksDW2022 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

A. WHERE gebruiken met LIKE- en ESCAPE-syntaxis

In het volgende voorbeeld wordt gezocht naar de rijen waarin de LargePhotoFileName kolom de tekens green_bevat en wordt de ESCAPE optie gebruikt omdat _ dit een jokerteken is. Als u de ESCAPE optie niet opgeeft, zoekt de query naar beschrijvingswaarden die het woord green bevatten, gevolgd door een ander teken dan het _ teken.

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

B. WHERE en LIKE-syntaxis gebruiken met Unicode-gegevens

In het volgende voorbeeld wordt de WHERE component gebruikt om het postadres op te halen voor elk bedrijf dat zich buiten de Verenigde Staten (US) bevindt en in een stad waarvan de naam begint met 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%';

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

C. WHERE gebruiken met LIKE

In het volgende voorbeeld wordt gezocht naar de rijen waarin de LastName kolom de tekens andbevat.

-- Uses AdventureWorks

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

D. WHERE en LIKE-syntaxis gebruiken met Unicode-gegevens

In het volgende voorbeeld wordt de WHERE component gebruikt om een Unicode-zoekopdracht uit te voeren op de LastName kolom.

-- Uses AdventureWorks

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