LIKE (Entity SQL)
Menentukan apakah karakter tertentu String
cocok dengan pola yang ditentukan.
Sintaks
match [NOT] LIKE pattern [ESCAPE escape]
Argumen
match
Ekspresi Entity SQL yang mengevaluasi ke String
.
pattern
Pola yang cocok dengan yang ditentukan String
.
escape
Karakter escape.
NOT Menentukan bahwa hasil LIKE dinegasikan.
Tampilkan Nilai
true
jika string
cocok dengan pola; jika tidak, false
.
Keterangan
Ekspresi Entity SQL yang menggunakan operator LIKE dievaluasi dengan cara yang sama seperti ekspresi yang menggunakan kesetaraan sebagai kriteria filter. Namun, ekspresi Entity SQL yang menggunakan operator LIKE dapat menyertakan karakter harfiah dan karakter wildcard.
Tabel berikut menjelaskan sintaks pola string
.
Karakter Wildcard | Deskripsi | Contoh |
---|---|---|
% | Setiap string dari nol atau lebih karakter. |
title like '%computer%' menemukan semua judul dengan kata "computer" di mana saja dalam judul. |
_ (garis bawah) | Setiap karakter tunggal. | firstname like '_ean' menemukan keempat nama depan huruf yang diakhir dengan "ean ," seperti Dean atau Sean. |
[ ] | Setiap karakter tunggal dalam rentang tertentu ([a-f]) atau set ([abcdef]). | lastname like '[C-P]arsen' menemukan nama belakang yang berakhiran dengan "arsen" dan dimulai dengan karakter tunggal antara C dan P, seperti Carsen atau Larsen. |
[^] | Setiap karakter tunggal tidak dalam rentang yang ditentukan ([^a-f]) atau set ([^abcdef]). | lastname like 'de[^l]%' menemukan semua nama belakang yang dimulai dengan "de" dan tidak menyertakan "l" sebagai huruf berikutnya. |
Catatan
Operator Entity SQL LIKE dan klausul ESCAPE tidak dapat diterapkan ke nilai System.DateTime
atau System.Guid
.
LIKE mendukung pencocokan pola ASCII dan pencocokan pola Unicode. Ketika semua parameter adalah karakter ASCII, pencocokan pola ASCII dilakukan. Jika satu atau lebih argumen adalah Unicode, semua argumen dikonversi ke Unicode dan pencocokan pola Unicode dilakukan. Saat Anda menggunakan Unicode dengan LIKE, blank berikutnya signifikan; namun, untuk non-Unicode, blank berikutnya tidak signifikan. Sintaks string pola Entity SQL sama dengan Transact-SQL.
Pola dapat mencakup karakter reguler dan karakter kartubebas. Selama pencocokan pola, karakter biasa harus sama persis dengan karakter yang ditentukan dalam karakter string
. Namun, karakter wildcard dapat dicocokkan dengan fragmen arbitrer dari string karakter. Ketika digunakan dengan karakter wildcard, operator LIKE lebih fleksibel daripada operator perbandingan string = dan !=.
Catatan
Anda dapat menggunakan ekstensi khusus penyedia jika Anda menargetkan penyedia tertentu. Namun, konstruksi tersebut dapat diperlakukan secara berbeda oleh penyedia lain, misalnya. SqlServer mendukung pola [first-last] dan [^first-last] di mana yang pertama cocok dengan tepat satu karakter antara yang pertama dan terakhir, dan yang terakhir cocok dengan tepat satu karakter yang bukan antara yang pertama dan terakhir.
Escape
Dengan menggunakan klausul ESCAPE, Anda dapat mencari string karakter yang menyertakan satu atau beberapa karakter wildcard khusus yang dijelaskan dalam tabel di bagian sebelumnya. Misalnya, asumsikan beberapa dokumen menyertakan harfiah "100%" dalam judul dan Anda ingin mencari semua dokumen tersebut. Karena karakter persen (%) adalah karakter wildcard, Anda harus menghindarinya menggunakan klausul Entity SQL ESCAPE untuk berhasil menjalankan pencarian. Berikut ini adalah contoh dari filter ini.
"title like '%100!%%' escape '!'"
Dalam ekspresi pencarian ini, persentase karakter wildcard (%) segera setelah karakter tanda seru (!) diperlakukan sebagai harfiah, bukan sebagai karakter wildcard. Anda dapat menggunakan karakter apa pun sebagai karakter escape kecuali karakter wildcard Entity SQL dan karakter tanda kurung siku ([ ]
). Pada contoh sebelumnya, karakter tanda seru (!) adalah karakter escape.
Contoh
Dua kueri Entity SQL berikut menggunakan operator LIKE dan ESCAPE untuk menentukan apakah string karakter tertentu cocok dengan pola yang ditentukan. Kueri pertama menelusuri Name
yang dimulai dengan karakter Down_
. Kueri ini menggunakan opsi ESCAPE karena garis bawah (_
) adalah karakter wildcard. Tanpa menentukan opsi ESCAPE, kueri akan mencari nilai Name
apa pun yang dimulai dengan kata Down
diikuti oleh karakter tunggal apa pun selain karakter garis bawah. Kueri didasarkan pada Model Penjualan AdventureWorks. Untuk mengompilasi dan menjalankan kueri ini, ikuti langkah-langkah berikut:
Ikuti prosedur di Cara: Menjalankan Kueri yang Mengembalikan Hasil PrimitiveType.
Teruskan kueri berikut sebagai argumen ke metode
ExecutePrimitiveTypeQuery
:
-- LIKE and ESCAPE
-- If an AdventureWorksEntities.Products contained a Name
-- with the value 'Down_Tube', the following query would find that
-- value.
Select value P.Name FROM AdventureWorksEntities.Products AS P
WHERE P.Name LIKE 'DownA_%' ESCAPE 'A'
-- LIKE
Select value P.Name FROM AdventureWorksEntities.Products AS P
WHERE P.Name LIKE 'BB%'