Udostępnij za pomocą


Warunek wyszukiwania (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Kombinacja co najmniej jednego predykatu używającego operatorów ANDlogicznych , ORi NOT.

Transact-SQL konwencje składni

Syntax

Składnia dla programu SQL Server, usługi Azure SQL Database i usługi 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

Składnia dla usług Azure Synapse Analytics i 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>

Określa warunki wierszy zwracanych w zestawie wyników dla SELECT instrukcji, wyrażenia zapytania lub podzapytania. W przypadku instrukcji UPDATE określa wiersze do zaktualizowania. W przypadku instrukcji DELETE określa wiersze do usunięcia. Nie ma limitu liczby predykatów, które można uwzględnić w warunku wyszukiwania instrukcji Transact-SQL.

<graph_search_pattern>

Określa wzorzec dopasowania grafu. Aby uzyskać więcej informacji na temat argumentów dla tej klauzuli, zobacz MATCH

NOT

Neguje wyrażenie logiczne określone przez predykat. Aby uzyskać więcej informacji, zobacz NOT.

AND

Łączy dwa warunki i ocenia, TRUE gdy oba warunki są TRUE. Aby uzyskać więcej informacji, zobacz AND.

OR

Łączy dwa warunki i ocenia, TRUE gdy dowolny warunek to TRUE. Aby uzyskać więcej informacji, zobacz OR.

<predicate>

Wyrażenie zwracające TRUEwyrażenie , FALSElub UNKNOWN. Aby uzyskać więcej informacji, zobacz Predykaty.

expression

Określa nazwę kolumny, stałą, funkcję, zmienną, podzapytę skalarną lub dowolną kombinację nazw kolumn, stałych i funkcji połączonych przez operatory lub podzapytania. Wyrażenie może również zawierać CASE wyrażenie.

Stałe ciągów innych niż Unicode i zmienne używają strony kodowej odpowiadającej domyślnemu sortowaniu bazy danych. Konwersje stron kodowych mogą wystąpić podczas pracy tylko z danymi znaków innych niż Unicode i odwoływanie się do typów danych znaków innych niż Unicode char, varchar i tekst. Program SQL Server konwertuje stałe i zmienne inne niż Unicode na stronę kodową odpowiadającą sortowaniu przywoływalnej kolumny lub określonej przy użyciu metody COLLATE, jeśli ta strona kodowa różni się od strony kodowej odpowiadającej domyślnemu sortowaniu bazy danych. Wszystkie znaki nie odnalezione na nowej stronie kodu są tłumaczone na podobny znak, jeśli można znaleźć mapowanie najlepiej dopasowane lub inne są konwertowane na domyślny znak ?zastępczy .

Podczas pracy z wieloma stronami kodu stałe znaków mogą być poprzedzone wielkimi literami N, a zmienne Unicode mogą być używane, aby uniknąć konwersji stron kodu.

= operator

Operator używany do testowania równości między dwoma wyrażeniami.

<> operator

Operator używany do testowania warunku dwóch wyrażeń nie jest równy sobie nawzajem.

!= operator

Operator używany do testowania warunku dwóch wyrażeń nie jest równy sobie nawzajem.

> operator

Operator używany do testowania warunku jednego wyrażenia jest większy niż drugi.

>= operator

Operator używany do testowania warunku jednego wyrażenia jest większe lub równe drugiemu wyrażeniu.

!> operator

Operator używany do testowania warunku jednego wyrażenia nie jest większy niż inne wyrażenie.

< operator

Operator używany do testowania warunku jednego wyrażenia jest mniejszy niż drugi.

<= operator

Operator używany do testowania warunku jednego wyrażenia jest mniejsze lub równe drugiemu wyrażeniu.

!< operator

Operator używany do testowania warunku jednego wyrażenia nie jest mniejszy niż inne wyrażenie.

string_expression

Ciąg znaków i symbole wieloznaczne.

[ NIE ] LUBIĆ

Wskazuje, że kolejny ciąg znaków ma być używany z dopasowaniem wzorca. Aby uzyskać więcej informacji, zobacz LIKE.

ESCAPE "znak escape_"

Umożliwia wyszukiwanie symboli wieloznacznych w ciągu znaków zamiast działać jako symbol wieloznaczny. escape_character jest znakiem umieszczonym przed symbolem wieloznacznymi, aby wskazać to specjalne użycie.

[ NIE ] MIĘDZY

Określa zakres włącznie wartości. Użyj AND polecenia , aby oddzielić wartości początkowe i końcowe. Aby uzyskać więcej informacji, zobacz BETWEEN (MIĘDZY).

JEST [ NIE ] NULL

Określa wyszukiwanie wartości null lub wartości, które nie mają wartości null, w zależności od użytych słów kluczowych. Wyrażenie z operatorem bitowym lub arytmetycznym oblicza wartość NULL , jeśli którykolwiek z operandów to NULL.

JEST [ NIE ] ODRĘBNY OD

Porównuje równość dwóch wyrażeń i gwarantuje wynik true lub false, nawet jeśli jeden lub oba operandy są NULL. Aby uzyskać więcej informacji, zobacz IS [NOT] DISTINCT FROM (Transact-SQL).

CONTAINS

Wyszukuje kolumny zawierające dane oparte na znakach, aby uzyskać dokładne lub mniej precyzyjne (rozmyte) dopasowania do pojedynczych słów i fraz, bliskość wyrazów w określonej odległości od siebie i dopasowania ważone. Tej opcji można używać tylko z instrukcjami SELECT . Aby uzyskać więcej informacji, zobacz ZAWIERA.

FREETEXT

Udostępnia prostą formę zapytania języka naturalnego, wyszukując kolumny zawierające dane oparte na znakach dla wartości, które pasują do znaczenia zamiast dokładnych słów w predykacie. Tej opcji można używać tylko z instrukcjami SELECT . Aby uzyskać więcej informacji, zobacz FREETEXT.

[ NIE ] W

Określa wyszukiwanie wyrażenia na podstawie tego, czy wyrażenie jest zawarte w liście, czy wykluczone z listy. Wyrażenie wyszukiwania może być stałą lub nazwą kolumny, a lista może być zestawem stałych lub, na ogół, podzapytaniem. Ujmij listę wartości w nawiasach. Aby uzyskać więcej informacji, zobacz IN.

subquery

Można uznać za ograniczoną SELECT instrukcję i jest podobna do <query_expression> w instrukcji SELECT . Klauzula ORDER BYINTO i słowo kluczowe nie są dozwolone. Aby uzyskać więcej informacji, zobacz SELECT.

ALL

Używany z operatorem porównania i podzapytaniem. Zwraca wartość TRUE , <predicate> gdy wszystkie wartości pobrane dla podzapytania spełniają operację porównania lub FALSE gdy nie wszystkie wartości spełniają porównanie lub gdy podzapytywanie nie zwraca żadnych wierszy do instrukcji zewnętrznej. Aby uzyskać więcej informacji, zobacz WSZYSTKIE.

{ NIEKTÓRE | DOWOLNA }

Używany z operatorem porównania i podzapytaniem. Zwraca wartość TRUE dla <predicate> , gdy dowolna wartość pobrana dla podzapytania spełnia operację porównania, lub FALSE gdy żadne wartości w podzapytaniu nie spełniają porównania lub gdy podzapytywanie nie zwraca żadnych wierszy do instrukcji zewnętrznej. W przeciwnym razie wyrażenie to UNKNOWN. Aby uzyskać więcej informacji, zobacz SOME | DOWOLNY.

EXISTS

Używany z podzapytaniem do testowania istnienia wierszy zwracanych przez podzapytywanie. Aby uzyskać więcej informacji, zobacz ISTNIEJE.

Remarks

Kolejność pierwszeństwa dla operatorów logicznych to NOT (najwyższa), a następnie AND, a następnie OR. Nawiasy mogą służyć do zastąpienia tego pierwszeństwa w warunku wyszukiwania. Kolejność oceny operatorów logicznych może się różnić w zależności od wyborów dokonanych przez optymalizator zapytań. Aby uzyskać więcej informacji na temat działania operatorów logicznych na wartościach logiki, zobacz AND, OR i NOT.

Examples

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.

A. Używanie składni WHERE z składnią LIKE i ESCAPE

Poniższy przykład wyszukuje wiersze, w których kolumna LargePhotoFileName zawiera znaki green_, i używa ESCAPE opcji , ponieważ _ jest symbolem wieloznacznymi. Jeśli nie określisz ESCAPE opcji, zapytanie wyszukuje dowolne wartości opisu zawierające wyraz green , po którym następuje dowolny pojedynczy znak inny niż _ znak.

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

B. Używanie składni WHERE i LIKE z danymi Unicode

W poniższym przykładzie użyto WHERE klauzuli , aby pobrać adres wysyłkowy dla każdej firmy spoza Stanów Zjednoczonych (US) i w mieście, którego nazwa zaczyna się od 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%';

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Używanie funkcji WHERE z funkcją LIKE

Poniższy przykład wyszukuje wiersze, w których kolumna LastName zawiera znaki and.

-- Uses AdventureWorks

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

D. Używanie składni WHERE i LIKE z danymi Unicode

W poniższym przykładzie użyto klauzuli WHERE , aby wykonać wyszukiwanie Unicode w kolumnie LastName .

-- Uses AdventureWorks

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