Kondisi pencarian (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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

Konvensi Sintaksis T-SQL

Sintaks

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

NOT
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 tersebut TRUE. Untuk informasi selengkapnya, lihat AND (Transact-SQL).

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

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

ekspresi
Adalah nama kolom, konstanta, fungsi, variabel, subkueri skalar, atau kombinasi nama kolom, konstanta, dan fungsi apa pun yang disambungkan 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 kolase default database. Konversi halaman kode dapat terjadi saat hanya bekerja dengan data karakter non-Unicode dan mereferensikan karakter karakter non-Unicode jenis data 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.

Aku tidak bisa melakukan ini. SEPERTI
Menunjukkan bahwa string karakter berikutnya akan digunakan dengan pencocokan pola. Untuk informasi selengkapnya, lihat LIKE (Transact-SQL).

ESCAPE 'karakter 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.

Aku tidak bisa melakukan ini. ANTARA
Menentukan rentang nilai inklusif. Gunakan AND untuk memisahkan nilai awal dan akhir. Untuk informasi selengkapnya, lihat BETWEEN (Transact-SQL).

IS [ NOT ] NULL
Menentukan pencarian untuk nilai null, atau untuk nilai yang tidak null, bergantung 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 yang benar atau salah, meskipun satu atau kedua operan 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 arti alih-alih kata yang tepat dalam predikat. Opsi ini hanya dapat digunakan dengan pernyataan SELECT. Untuk informasi selengkapnya, lihat FREETEXT (Transact-SQL).

Aku tidak bisa melakukan ini. In
Menentukan pencarian ekspresi, berdasarkan apakah ekspresi disertakan atau dikecualikan dari daftar. Ekspresi pencarian bisa berupa nama konstanta atau kolom, dan daftarnya 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 ALL (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

A. 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 karakter tunggal selain _ karakter.

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

Lihat juga