Kondisi pencarian (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Kombinasi satu atau beberapa predikat yang menggunakan operator logis AND, OR, dan NOT.

Konvensi sintaks transact-SQL

Sintaksis

-- Syntax for SQL Server and Azure SQL Database  
  
<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 for Azure Synapse Analytics and 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)
    }

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

<search_condition>
Menentukan kondisi untuk baris yang dikembalikan dalam tataan hasil untuk pernyataan SELECT, ekspresi kueri, atau subkueri. Untuk pernyataan UPDATE, menentukan baris yang akan diperbarui. Untuk pernyataan DELETE, menentukan baris yang akan dihapus. Tidak ada batasan jumlah predikat yang dapat disertakan dalam kondisi pencarian pernyataan Transact-SQL.

<graph_search_pattern>
Menentukan pola pencocokan grafik. Untuk informasi selengkapnya tentang argumen untuk klausul ini, lihat MATCH (Transact-SQL)

TIDAK
Meniadakan ekspresi Boolean yang ditentukan oleh predikat. Untuk informasi selengkapnya, lihat NOT (Transact-SQL).

AND
Menggabungkan dua kondisi dan mengevaluasi ke TRUE saat kedua kondisi adalah TRUE. Untuk informasi selengkapnya, lihat AND (Transact-SQL).

ATAU
Menggabungkan dua kondisi dan mengevaluasi ke TRUE saat salah satu kondisi adalah TRUE. Untuk informasi selengkapnya, lihat OR (Transact-SQL).

< Predikat >
Adalah ekspresi yang mengembalikan TRUE, FALSE, atau UNKNOWN.

expression
Adalah nama kolom, konstanta, fungsi, variabel, subkueri skalar, atau kombinasi nama kolom, konstanta, dan fungsi yang terhubung oleh operator atau operator, atau subkueri. Ekspresi juga dapat berisi ekspresi CASE.

Catatan

Konstanta dan variabel string non-Unicode menggunakan halaman kode yang sesuai dengan kolatasi default database. Konversi halaman kode dapat terjadi saat hanya bekerja dengan data karakter non-Unicode dan merujuk karakter karakter non-Unicode karakter, varchar, dan teks. SQL Server mengonversi konstanta dan variabel string non-Unicode ke halaman kode yang sesuai dengan kolase kolom yang dirujuk atau ditentukan menggunakan COLLATE, jika halaman kode tersebut berbeda dari halaman kode yang sesuai dengan kolase default database. Karakter apa pun yang tidak ditemukan di halaman kode baru akan diterjemahkan ke karakter serupa, jika pemetaan yang paling pas dapat ditemukan, atau akan dikonversi ke karakter pengganti default "?".

Saat bekerja dengan beberapa halaman kode, konstanta karakter dapat diawali dengan huruf besar 'N', dan variabel Unicode dapat digunakan, untuk menghindari konversi halaman kode.

=
Apakah operator digunakan untuk menguji kesetaraan antara dua ekspresi.

<>
Apakah operator digunakan untuk menguji kondisi dua ekspresi yang tidak sama satu sama lain.

!=
Apakah operator digunakan untuk menguji kondisi dua ekspresi yang tidak sama satu sama lain.

>
Apakah operator digunakan untuk menguji kondisi satu ekspresi yang lebih besar dari yang lain.

>=
Apakah operator digunakan untuk menguji kondisi satu ekspresi yang lebih besar dari atau sama dengan ekspresi lainnya.

!>
Apakah operator digunakan untuk menguji kondisi satu ekspresi yang tidak lebih besar dari ekspresi lainnya.

<
Apakah operator digunakan untuk menguji kondisi satu ekspresi yang kurang dari yang lain.

<=
Apakah operator digunakan untuk menguji kondisi satu ekspresi kurang dari atau sama dengan ekspresi lainnya.

!<
Apakah operator digunakan untuk menguji kondisi satu ekspresi yang tidak kurang dari ekspresi lainnya.

string_expression
Adalah string karakter dan karakter kartubebas.

[TIDAK] SEPERTI
Menunjukkan bahwa string karakter berikutnya akan digunakan dengan pencocokan pola. Untuk informasi selengkapnya, lihat LIKE (Transact-SQL).

KARAKTER ESCAPE 'escape_'
Memungkinkan karakter kartubebas dicari dalam string karakter alih-alih berfungsi sebagai kartubebas. escape_character adalah karakter yang diletakkan di depan karakter kartubebas untuk menunjukkan penggunaan khusus ini.

[TIDAK] ANTARA
Menentukan rentang nilai inklusif. Gunakan AND untuk memisahkan nilai awal dan akhir. Untuk informasi selengkapnya, lihat ANTARA (Transact-SQL).

IS [ NOT ] NULL
Menentukan pencarian untuk nilai null, atau untuk nilai yang tidak null, tergantung pada kata kunci yang digunakan. Ekspresi dengan operator bitwise atau aritmatika mengevaluasi ke NULL jika salah satu operand adalah NULL.

APAKAH [ TIDAK ] BERBEDA DARI
Membandingkan kesetaraan dua ekspresi dan menjamin hasil benar atau salah, bahkan jika satu atau kedua operand adalah NULL. Untuk informasi selengkapnya, lihat IS [NOT] DISTINCT FROM (Transact-SQL).

BERISI
Mencari kolom yang berisi data berbasis karakter untuk kecocokan yang tepat atau kurang tepat (fuzzy) dengan satu kata dan frasa, kedekatan kata dalam jarak tertentu satu sama lain, dan kecocokan tertimbang. Opsi ini hanya dapat digunakan dengan pernyataan SELECT. Untuk informasi selengkapnya, lihat CONTAINS (Transact-SQL).

TEKS BEBAS
Menyediakan bentuk sederhana kueri bahasa alami dengan mencari kolom yang berisi data berbasis karakter untuk nilai yang cocok dengan makna, bukan kata yang tepat dalam predikat. Opsi ini hanya dapat digunakan dengan pernyataan SELECT. Untuk informasi selengkapnya, lihat FREETEXT (Transact-SQL).

[TIDAK] IN
Menentukan pencarian ekspresi, berdasarkan apakah ekspresi disertakan atau dikecualikan dari daftar. Ekspresi pencarian bisa berupa konstanta atau nama kolom, dan daftar bisa menjadi sekumpulan konstanta atau, biasanya, subkueri. Sertakan daftar nilai dalam tanda kurung. Untuk informasi selengkapnya, lihat IN (Transact-SQL).

kueri bertumpuk
Dapat dianggap sebagai pernyataan SELECT terbatas dan mirip <dengan query_expression> dalam pernyataan SELECT. Klausa ORDER BY dan kata kunci INTO tidak diizinkan. Untuk informasi selengkapnya, lihat SELECT (Transact-SQL).

SEMUA
Digunakan dengan operator perbandingan dan subkueri. Mengembalikan TRUE untuk <predikat> ketika semua nilai yang diambil untuk subkueri memenuhi operasi perbandingan, atau FALSE ketika tidak semua nilai memenuhi perbandingan atau ketika subkueri tidak mengembalikan baris ke pernyataan luar. Untuk informasi selengkapnya, lihat SEMUA (Transact-SQL).

{ BEBERAPA | ANY }
Digunakan dengan operator perbandingan dan subkueri. Mengembalikan TRUE untuk <predikat> ketika nilai apa pun yang diambil untuk subkueri memenuhi operasi perbandingan, atau FALSE ketika tidak ada nilai dalam subkueri yang memenuhi perbandingan atau ketika subkueri tidak mengembalikan baris ke pernyataan luar. Jika tidak, ekspresinya TIDAK DIKETAHUI. Untuk informasi selengkapnya, lihat BEBERAPA | ANY (Transact-SQL).

EXISTS
Digunakan dengan subkueri untuk menguji keberadaan baris yang dikembalikan oleh subkueri. Untuk informasi selengkapnya, lihat EXISTS (Transact-SQL).

Keterangan

Urutan prioritas untuk operator logis ADALAH NOT (tertinggi), diikuti oleh AND, diikuti oleh OR. Tanda kurung dapat digunakan untuk mengambil alih prioritas ini dalam kondisi pencarian. Urutan evaluasi operator logis dapat bervariasi tergantung pada pilihan yang dibuat oleh pengoptimal kueri. Untuk informasi selengkapnya tentang cara operator logika beroperasi pada nilai logika, lihat AND (Transact-SQL), OR (Transact-SQL), dan NOT (Transact-SQL).

Contoh

J. Menggunakan WHERE dengan sintaks LIKE dan ESCAPE

Contoh berikut mencari baris di mana LargePhotoFileName kolom memiliki karakter green_, dan menggunakan opsi karena _ merupakan karakter kartubebasESCAPE. Tanpa menentukan ESCAPE opsi , kueri akan mencari nilai deskripsi apa pun yang berisi kata green diikuti oleh satu karakter selain _ karakter.

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

B. Menggunakan sintaks WHERE dan LIKE dengan data Unicode

Contoh berikut menggunakan klausul WHERE untuk mengambil alamat surat untuk perusahaan mana pun yang berada di luar Amerika Serikat (US) dan di kota yang namanya dimulai dengan Pa.

USE AdventureWorks2022;  
GO  
SELECT AddressLine1, AddressLine2, City, PostalCode, CountryRegionCode    
FROM Person.Address AS a  
JOIN Person.StateProvince AS s ON a.StateProvinceID = s.StateProvinceID  
WHERE CountryRegionCode NOT IN ('US')  
AND City LIKE N'Pa%' ;  

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

C. Menggunakan WHERE dengan LIKE

Contoh berikut mencari baris di mana LastName kolom memiliki karakter and.

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

D. Menggunakan sintaks WHERE dan LIKE dengan data Unicode

Contoh berikut menggunakan klausa WHERE untuk melakukan pencarian Unicode pada LastName kolom .

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

Baca juga