Megosztás a következőn keresztül:


Keresési feltétel (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Egy vagy több olyan predikátum kombinációja, amely a logikai operátorokat ANDhasználja , ORés NOT.

Transact-SQL szintaxis konvenciók

Syntax

Szintaxis az SQL Serverhez, az Azure SQL Database-hez és a felügyelt Azure SQL-példányhoz.

<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

Az Azure Synapse Analytics és a párhuzamos adattárház szintaxisa.

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

Megadja az utasítás, lekérdezési kifejezés vagy részkikérdezés eredményhalmazában SELECT visszaadott sorok feltételeit. Utasítás esetén UPDATE a frissíteni kívánt sorokat adja meg. Utasítás esetén DELETE a törölni kívánt sorokat adja meg. A Transact-SQL utasítás keresési feltételében szereplő predikátumok száma nincs korlátozva.

<graph_search_pattern>

A gráfegyezés mintáját adja meg. A záradék argumentumairól további információt a HOL.VAN

NOT

Tagadja a predikátum által megadott logikai kifejezést. További információ: NOT.

AND

Két feltételt egyesít, és mindkét feltételt TRUEkiértékeliTRUE. További információ: AND.

OR

Két feltételt egyesít, és kiértékeli, hogy TRUE az egyik feltétel mikor.TRUE További információ: OR.

<predicate>

Egy kifejezés, amely visszaadja TRUE, FALSEvagy UNKNOWN. További információ: Predikátumok.

expression

Megadja az oszlopnevet, az állandót, a függvényt, a változót, a skaláris allekérdezéseket vagy az oszlopnevek, állandók és függvények bármely kombinációját, amelyet egy operátor vagy operátor vagy allekérdezés kapcsol össze. A kifejezés a kifejezést is tartalmazhatja CASE .

A nem Unicode sztringállandók és változók az adatbázis alapértelmezett rendezésének megfelelő kódlapot használják. Kódlapkonverziók akkor fordulhatnak elő, ha csak nem Unicode karakteradatokkal dolgozik, és a nem Unicode karakter típusú karakterre, varcharra és szövegre hivatkozik. Az SQL Server a nem Unicode-sztringállandókat és változókat a hivatkozott oszlop rendezésének megfelelő vagy a használatával COLLATEmegadott kódlapra alakítja át, ha ez a kódlap eltér az adatbázis alapértelmezett rendezésének megfelelő kódlaptól. Az új kódlapon nem található karakterek hasonló karakterre lesznek lefordítva, ha a legjobban illeszkedő megfeleltetés található, vagy más karaktereket a program az alapértelmezett helyettesítő karakterre ?konvertál.

Ha több kódlapon dolgozik, a karakterállandók a nagybetűvel Nelőtagosodhatnak, és Unicode-változók is használhatók a kódlapkonverziók elkerülése érdekében.

= operátor

A két kifejezés közötti egyenlőség teszteléséhez használt operátor.

<> operátor

Két olyan kifejezés feltételének tesztelésére használt operátor, amely nem egyenlő egymással.

!= operátor

Két olyan kifejezés feltételének tesztelésére használt operátor, amely nem egyenlő egymással.

> operátor

Az egyik kifejezés feltételének teszteléséhez használt operátor nagyobb, mint a másik.

>= operátor

Az egyik kifejezés feltételének tesztelésére használt operátor nagyobb vagy egyenlő a másik kifejezésnél.

!> operátor

Az egyik kifejezés feltételének tesztelésére használt operátor nem nagyobb, mint a másik kifejezés.

< operátor

Az egyik kifejezés feltételének teszteléséhez használt operátor kisebb, mint a másik.

<= operátor

Az egyik kifejezés feltételének tesztelésére használt operátor kisebb vagy egyenlő a másik kifejezéssel.

!< operátor

Az egyik kifejezés feltételének tesztelésére használt operátor nem kisebb, mint a másik kifejezés.

string_expression

Karakterek és helyettesítő karakterek sztringje.

[ NEM ] SZERET

Azt jelzi, hogy a következő karaktersztringet mintaegyezéssel kell használni. További információ: LIKE.

ESCAPE "escape_ karakter"

Lehetővé teszi, hogy a helyettesítő karakterek karaktersztringben kereshetők ahelyett, hogy helyettesítő karakterként működjenek. escape_character a helyettesítő karakter elé helyezett karakter, amely jelzi ezt a speciális használatot.

[ NEM ] KÖZÖTT

Egy befogadó értéktartományt határoz meg. A kezdő és a záró érték elválasztására használható AND . További információ: BETWEEN.

NEM [ ] NULLA

A használt kulcsszavaktól függően null értékeket vagy nem null értékű értékeket határoz meg. Egy bitenkénti vagy aritmetikai operátorral rendelkező kifejezés kiértékeli, hogy NULL az operandusok bármelyike.NULL

[ NEM ] KÜLÖNBÖZIK A

Összehasonlítja a két kifejezés egyenlőségét, és garantálja a valódi vagy hamis eredményt, még akkor is, ha az egyik vagy mindkét operandus.NULL További információért lásd: IS [NOT] DISTINCT FROM (Transact-SQL).

CONTAINS

A karakteralapú adatokat tartalmazó oszlopokban pontos vagy kevésbé pontos (homályos) egyezéseket keres egyetlen szóra és kifejezésre, a szavak egymástól meghatározott távolságon belüli közelségére és a súlyozott egyezésekre. Ez a beállítás csak utasításokkal SELECT használható. További információ: CONTAINS.

FREETEXT

Egyszerű természetes nyelvi lekérdezési formát biztosít, ha olyan oszlopokat keres, amelyek karakteralapú adatokat tartalmaznak a predikátumban szereplő pontos szavak helyett a jelentésnek megfelelő értékekre. Ez a beállítás csak utasításokkal SELECT használható. További információ: FREETEXT.

[ NEM ] BAN

Egy kifejezés keresését határozza meg attól függően, hogy a kifejezés szerepel-e a listában, vagy ki van-e zárva egy listából. A keresési kifejezés lehet állandó vagy oszlopnév, a lista pedig állandók vagy jellemzően alqueryk halmaza is lehet. Az értékek listáját zárójelek közé kell sorolni. További információ: IN.

subquery

Korlátozott SELECT utasításnak tekinthető, és hasonló az <query_expression> utasításhozSELECT. A ORDER BY záradék és a INTO kulcsszó nem engedélyezett. További információ: SELECT.

ALL

Összehasonlító operátorral és al lekérdezéssel használható. Azt adja TRUE<predicate> vissza, hogy az al lekérdezéshez lekért összes érték megfelel-e az összehasonlítási műveletnek, vagy FALSE ha nem minden érték felel meg az összehasonlításnak, vagy ha az al lekérdezés nem ad vissza sorokat a külső utasításnak. További információ: ALL.

{ NÉHÁNY | BÁRMILYEN }

Összehasonlító operátorral és al lekérdezéssel használható. Azokat az értékeket TRUE<predicate> adja vissza, amikor az al lekérdezéshez lekért értékek megfelelnek az összehasonlítási műveletnek, vagy FALSE ha az al lekérdezésben egyetlen érték sem felel meg az összehasonlításnak, vagy ha az al lekérdezés nem ad vissza sorokat a külső utasításnak. Ellenkező esetben a kifejezés a következő UNKNOWN: . További információ: SOME | BÁRMELYIK.

EXISTS

Az alquery által visszaadott sorok meglétének tesztelésére szolgáló alquery használatával. További információ: EXISTS.

Remarks

A logikai operátorok prioritási sorrendje (a NOT legmagasabb), majd a ANDkövetkező OR: . A zárójelekkel felülbírálhatja ezt a elsőbbséget egy keresési feltételben. A logikai operátorok kiértékelési sorrendje a lekérdezésoptimalizáló által választott lehetőségektől függően változhat. A logikai operátorok logikai értékeken való működésével kapcsolatos további információkért lásd: AND, OR és NOT.

Examples

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

A. A WHERE használata a LIKE és AZ ESCAPE szintaxissal

Az alábbi példa megkeresi azokat a sorokat, amelyekben az LargePhotoFileName oszlop karaktereket green_tartalmaz, és helyettesítő karakterként ESCAPE használja a _ beállítást. Ha nem adja meg a ESCAPE beállítást, a lekérdezés olyan leírási értékeket keres, amelyek tartalmazzák a szót green , és a karakteren kívül _ egyetlen karaktert is követnek.

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

B. A WHERE és a LIKE szintaxis használata Unicode-adatokkal

Az alábbi példa a WHERE záradékot használja az Egyesült Államokon (US) kívüli és egy olyan város levelezési címének lekérésére, amelynek a neve a következővel Pakezdődik: .

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%';

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

C. A WHERE használata a LIKE használatával

Az alábbi példa azokat a sorokat keresi, amelyekben az LastName oszlop karakterei andtalálhatók.

-- Uses AdventureWorks

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

D. A WHERE és a LIKE szintaxis használata Unicode-adatokkal

Az alábbi példa a záradékot használja Unicode-keresés WHERE végrehajtásához az LastName oszlopban.

-- Uses AdventureWorks

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