Dela via


Sökvillkor (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

En kombination av ett eller flera predikat som använder de logiska operatorerna AND, ORoch NOT.

Transact-SQL syntaxkonventioner

Syntax

Syntax för SQL Server, Azure SQL Database och 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

Syntax för Azure Synapse Analytics och 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>

Anger villkoren för de rader som returneras i resultatuppsättningen för en instruktion, ett SELECT frågeuttryck eller en underfråga. För en UPDATE instruktion anger de rader som ska uppdateras. För en DELETE instruktion anger de rader som ska tas bort. Det finns ingen gräns för antalet predikat som kan ingå i ett sökvillkor för Transact-SQL-instruktion.

<graph_search_pattern>

Anger grafmatchningsmönstret. Mer information om argumenten för den här satsen finns i MATCH

NOT

Negerar det booleska uttrycket som anges av predikatet. Mer information finns i NOT.

AND

Kombinerar två villkor och utvärderas till TRUE när båda villkoren är TRUE. Mer information finns i OCH.

OR

Kombinerar två villkor och utvärderas till TRUE när något av villkoren är TRUE. Mer information finns i OR.

<predicate>

Ett uttryck som returnerar TRUE, FALSEeller UNKNOWN. Mer information finns i Predikat.

expression

Anger ett kolumnnamn, en konstant, en funktion, en variabel, en skalär underfråga eller en kombination av kolumnnamn, konstanter och funktioner som är anslutna av en operator eller operator eller en underfråga. Uttrycket kan också innehålla uttrycket CASE .

Icke-Unicode-strängkonstanter och variabler använder den kodsida som motsvarar databasens standardsortering. Konverteringar av kodsidor kan ske när du endast arbetar med teckendata som inte är Unicode och refererar till datatyperna char, varchar och text som inte är Unicode-tecken. SQL Server konverterar icke-Unicode-strängkonstanter och variabler till den kodsida som motsvarar sortering av den refererade kolumnen eller som anges med , COLLATEom kodsidan skiljer sig från den kodsida som motsvarar standardsortering av databasen. Tecken som inte hittas på den nya kodsidan översätts till ett liknande tecken om det går att hitta en mappning som passar bäst , annars konverteras till standardersättningstecknet ?för .

När du arbetar med flera kodsidor kan teckenkonstanter prefixeras med versaler Noch Unicode-variabler kan användas för att undvika kodsidekonverteringar.

= operatör

Operatorn som används för att testa likheten mellan två uttryck.

<> operatör

Operatorn som används för att testa villkoret för två uttryck som inte är lika med varandra.

!= operatör

Operatorn som används för att testa villkoret för två uttryck som inte är lika med varandra.

> operatör

Operatorn som används för att testa villkoret för ett uttryck som är större än det andra.

>= operatör

Operatorn som används för att testa villkoret för ett uttryck som är större än eller lika med det andra uttrycket.

!> operatör

Operatorn som används för att testa villkoret för ett uttryck som inte är större än det andra uttrycket.

< operatör

Operatorn som används för att testa villkoret för ett uttryck är mindre än det andra.

<= operatör

Operatorn som används för att testa villkoret för ett uttryck som är mindre än eller lika med det andra uttrycket.

!< operatör

Operatorn som används för att testa villkoret för ett uttryck är inte mindre än det andra uttrycket.

string_expression

En sträng med tecken och jokertecken.

[ NOT ] TYCKA OM

Anger att den efterföljande teckensträngen ska användas med mönstermatchning. Mer information finns i LIKE.

ESCAPE "escape_ tecken"

Tillåter att ett jokertecken söks efter i en teckensträng i stället för att fungera som jokertecken. escape_character är det tecken som placeras framför jokertecknet för att indikera den här specialanvändningen.

[ NOT ] MELLAN

Anger ett inkluderande värdeintervall. Använd AND för att avgränsa start- och slutvärdena. Mer information finns i BETWEEN.

ÄR [ INTE ] NULL

Anger en sökning efter null-värden eller värden som inte är null, beroende på vilka nyckelord som används. Ett uttryck med en bitvis eller aritmetikoperator utvärderas till NULL om någon av operanderna är NULL.

ÄR [ INTE] SKILD FRÅN

Jämför likheten mellan två uttryck och garanterar ett sant eller falskt resultat, även om en eller båda operanderna är NULL. Mer information finns i ÄR [INTE] DISTINKT FRÅN (Transact-SQL).

CONTAINS

Söker i kolumner som innehåller teckenbaserade data efter exakta eller mindre exakta (fuzzy) matchningar till enkla ord och fraser, närheten till ord inom ett visst avstånd från varandra och viktade matchningar. Det här alternativet kan bara användas med SELECT -instruktioner. Mer information finns i CONTAINS.

FREETEXT

Ger en enkel form av fråga på naturligt språk genom att söka i kolumner som innehåller teckenbaserade data efter värden som matchar innebörden i stället för de exakta orden i predikatet. Det här alternativet kan bara användas med SELECT -instruktioner. Mer information finns i FREETEXT.

[ NOT ] I

Anger sökningen efter ett uttryck, baserat på om uttrycket ingår i eller exkluderas från en lista. Sökuttrycket kan vara en konstant eller ett kolumnnamn, och listan kan vara en uppsättning konstanter eller, mer typiskt, en underfråga. Omslut listan med värden inom parenteser. Mer information finns i IN.

subquery

Kan betraktas som en begränsad SELECT instruktion och liknar <query_expression> den i -instruktionen SELECT . Satsen ORDER BY och nyckelordet INTO tillåts inte. Mer information finns i SELECT.

ALL

Används med en jämförelseoperator och en underfråga. Returnerar TRUE för <predicate> när alla värden som hämtas för underfrågan uppfyller jämförelseåtgärden, eller FALSE när inte alla värden uppfyller jämförelsen eller när underfrågan inte returnerar några rader till den yttre instruktionen. Mer information finns i ALLA.

{ VISSA | ANY }

Används med en jämförelseoperator och en underfråga. Returnerar TRUE för <predicate> när ett värde som hämtats för underfrågan uppfyller jämförelseåtgärden, eller FALSE när inga värden i underfrågan uppfyller jämförelsen eller när underfrågan inte returnerar några rader till den yttre instruktionen. Annars är UNKNOWNuttrycket . Mer information finns i SOME | ALLA.

EXISTS

Används med en underfråga för att testa förekomsten av rader som returneras av underfrågan. Mer information finns i FINNS.

Remarks

Prioritetsordningen för de logiska operatorerna är NOT (högsta), följt av AND, följt av OR. Parenteser kan användas för att åsidosätta den här prioriteten i ett sökvillkor. Ordningen på utvärderingen av logiska operatorer kan variera beroende på val som görs av frågeoptimeraren. Mer information om hur de logiska operatorerna fungerar med logikvärden finns i AND, OR och NOT.

Examples

Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

A. Använda WHERE med LIKE- och ESCAPE-syntax

Följande exempel söker efter de rader där LargePhotoFileName kolumnen innehåller tecknen green_och använder ESCAPE alternativet eftersom _ är ett jokertecken. Om du inte anger ESCAPE alternativet söker frågan efter eventuella beskrivningsvärden som innehåller ordet green följt av andra tecken än _ tecknet.

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

B. Använda WHERE- och LIKE-syntax med Unicode-data

I följande exempel används WHERE -satsen för att hämta postadressen för alla företag som befinner sig utanför USA (US) och i en stad vars namn börjar med 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%';

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

C. Använda WHERE med LIKE

I följande exempel söker efter de rader där LastName kolumnen innehåller tecknen and.

-- Uses AdventureWorks

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

D. Använda WHERE- och LIKE-syntax med Unicode-data

I följande exempel används WHERE -satsen för att utföra en Unicode-sökning i LastName kolumnen.

-- Uses AdventureWorks

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