Kondisi pencarian (Transact-SQL)
Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Kombinasi satu atau beberapa predikat yang menggunakan operator AND
logis , , OR
dan NOT
.
Sintaks
Sintaks untuk SQL Server, Azure SQL Database, dan 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
Sintaks untuk Azure Synapse Analytics dan Gudang Data Paralel.
< 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)
}
Argumen
<search_condition>
Menentukan kondisi untuk baris yang dikembalikan dalam tataan hasil untuk SELECT
pernyataan, ekspresi kueri, atau subkueri. Untuk pernyataan UPDATE
, menentukan baris yang akan diperbarui. DELETE
Untuk pernyataan, 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
TIDAK
Meniadakan ekspresi Boolean yang ditentukan oleh predikat. Untuk informasi selengkapnya, lihat TIDAK.
AND
Menggabungkan dua kondisi dan mengevaluasi kapan TRUE
kedua kondisi tersebut adalah TRUE
. Untuk informasi selengkapnya, lihat AND.
ATAU
Menggabungkan dua kondisi dan mengevaluasi ke TRUE
ketika salah satu kondisi adalah TRUE
. Untuk informasi selengkapnya, lihat OR.
<predicate>
Ekspresi yang mengembalikan TRUE
, , FALSE
atau UNKNOWN
. Untuk informasi selengkapnya, lihat Predikat.
expression
Menentukan nama kolom, konstanta, fungsi, variabel, subkueri skalar, atau kombinasi nama kolom, konstanta, dan fungsi apa pun yang terhubung oleh operator atau operator, atau subkueri. Ekspresi juga dapat berisi CASE
ekspresi.
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 diterjemahkan ke karakter serupa jika pemetaan yang paling pas dapat ditemukan, atau dikonversi ke karakter pengganti default .?
Saat Anda bekerja dengan beberapa halaman kode, konstanta karakter dapat diawali dengan huruf N
besar , dan variabel Unicode dapat digunakan, untuk menghindari konversi halaman kode.
=
operator
Operator yang digunakan untuk menguji kesetaraan antara dua ekspresi.
<>
operator
Operator yang digunakan untuk menguji kondisi dua ekspresi tidak sama satu sama lain.
!=
operator
Operator yang digunakan untuk menguji kondisi dua ekspresi tidak sama satu sama lain.
>
operator
Operator yang digunakan untuk menguji kondisi satu ekspresi lebih besar dari yang lain.
>=
operator
Operator yang digunakan untuk menguji kondisi satu ekspresi lebih besar dari atau sama dengan ekspresi lainnya.
!>
operator
Operator yang digunakan untuk menguji kondisi satu ekspresi tidak lebih besar dari ekspresi lainnya.
<
operator
Operator yang digunakan untuk menguji kondisi satu ekspresi kurang dari yang lain.
<=
operator
Operator yang digunakan untuk menguji kondisi satu ekspresi kurang dari atau sama dengan ekspresi lainnya.
!<
operator
Operator yang digunakan untuk menguji kondisi satu ekspresi tidak kurang dari ekspresi lainnya.
string_expression
String karakter dan karakter kartubebas.
[TIDAK] SUKA
Menunjukkan bahwa string karakter berikutnya akan digunakan dengan pencocokan pola. Untuk informasi selengkapnya, lihat SUKA.
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.
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 yang benar atau salah, bahkan jika 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 SELECT
pernyataan. Untuk informasi selengkapnya, lihat CONTAINS.
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 SELECT
pernyataan. Untuk informasi selengkapnya, lihat FREETEXT.
[TIDAK] DI
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.
kueri bertumpuk
Dapat dianggap sebagai pernyataan terbatas SELECT
dan mirip <query_expression>
dengan dalam SELECT
pernyataan. Klausa ORDER BY
dan INTO
kata kunci tidak diizinkan. Untuk informasi selengkapnya, lihat SELECT.
SEMUA
Digunakan dengan operator perbandingan dan subkueri. TRUE
Mengembalikan ketika <predicate>
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.
{ BEBERAPA | ANY }
Digunakan dengan operator perbandingan dan subkueri. TRUE
Mengembalikan ketika <predicate>
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 adalah UNKNOWN
. Untuk informasi selengkapnya, lihat BEBERAPA | ADA.
EXISTS
Digunakan dengan subkueri untuk menguji keberadaan baris yang dikembalikan oleh subkueri. Untuk informasi selengkapnya, lihat EXISTS.
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, OR, dan NOT.
Contoh
Sampel kode Transact-SQL dalam artikel ini menggunakan AdventureWorks2022
database sampel atau AdventureWorksDW2022
, yang dapat Anda unduh dari halaman beranda Sampel Microsoft SQL Server dan Proyek Komunitas.
J. Gunakan WHERE dengan sintaks LIKE dan ESCAPE
Contoh berikut mencari baris di mana LargePhotoFileName
kolom memiliki karakter green_
, dan menggunakan opsi karena _
merupakan karakter kartubebasESCAPE
. Jika Anda tidak menentukan ESCAPE
opsi , kueri 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
INNER 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. Gunakan 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%';