Bagikan melalui


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 ANDlogis , , ORdan NOT.

Konvensi sintaks transact-SQL

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, , FALSEatau 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 Nbesar , 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%';