Pengoperasian Like agak seperti dalam, tetapi arahnya telah berubah. Apa artinya? Anda memberikan string dan mencari bidang dalam data yang berisi string ini. Artinya, string tertentu adalah bagian dari bidang. Sql scrip{filter}t ditulis seperti ini.
Pilih * dari tabel di mana id seperti '%AD%' Selec * dari tabel di mana id seperti '%AD' Selec * dari tabel di mana id seperti 'AD%' % di atas adalah karakter pengganti, yang menunjukkan bahwa bidang berisi nilai, dan posisi yang tidak diketahui diganti dengan %. Yang pertama adalah untuk menunjukkan bahwa bagian tengah adalah AD, dan kedua ujungnya tidak jelas. Yang kedua adalah AD di akhir, dan yang sebelumnya tidak jelas. Yang ketiga, sebaliknya, dimulai dengan AD dan berakhir dengan tidak jelas. Pernyataan Linq yang sesuai adalah:
var q = (dari c dalam db. Pelanggan di mana c.CustomerID.Contains("ROUT") pilih c). ToList(); SQL yang dihasilkannya adalah
PILIH [t0]. [ID Pelanggan], [t0]. [Nama Perusahaan], [t0]. [NamaKontak], [t0]. [KontakT itle], [t0]. [Alamat], [t0]. [Kota], [t0]. [Wilayah], [t0]. [Kode Pos], [t0]. [Dewan coba], [t0]. [Telepon], [t0]. [Faks] DARI [dbo]. [Pelanggan] SEBAGAI [t0] DI MANA [t0]. [ID Pelanggan] SEPERTI @p0 -- @p0: String Input (Ukuran = 6; Prec = 0; Skala = 0) [%ROUT%] Diakhiri dengan ISSA, kepala wildcard:
var q = (dari c dalam db. Pelanggan di mana c.CustomerID.EndsWith("ISSA") pilih c). ToList(); SQL yang dihasilkannya adalah
PILIH [t0]. [ID Pelanggan], [t0]. [Nama Perusahaan], [t0]. [NamaKontak], [t0]. [KontakT itle], [t0]. [Alamat], [t0]. [Kota], [t0]. [Wilayah], [t0]. [Kode Pos], [t0]. [Dewan coba], [t0]. [Telepon], [t0]. [Faks] DARI [dbo]. [Pelanggan] SEBAGAI [t0] DI MANA [t0]. [ID Pelanggan] SEPERTI @p0 -- @p0: String Input (Ukuran = 5; Prec = 0; Skala = 0) [%ISSA] Dimulai dengan ARO, wildcard ekor:
var q = (dari c dalam db. Pelanggan di mana c.CustomerID.StartsWith("ARO") pilih c). ToList(); SQL yang dihasilkannya adalah
PILIH [t0]. [ID Pelanggan], [t0]. [Nama Perusahaan], [t0]. [NamaKontak], [t0]. [KontakT itle], [t0]. [Alamat], [t0]. [Kota], [t0]. [Wilayah], [t0]. [Kode Pos], [t0]. [Dewan coba], [t0]. [Telepon], [t0]. [Faks] DARI [dbo]. [Pelanggan] SEBAGAI [t0] DI MANA [t0]. [ID Pelanggan] SEPERTI @p0 -- @p0: String Input (Ukuran = 4; Prec = 0; Skala = 0) [ARO%]
Linq juga menyediakan metode yang disebut SqlMethods.Like, yang mengharuskan namespace System.Data.Linq.SqlClient ditambahkan terlebih dahulu. Tiga di atas dapat ditulis
var q = (dari c dalam db. Pelanggan di mana SqlMethods.Like(c.CustomerID, "%ROUT%") pilih c). ToList(); Di sini, Anda perlu mengisi wildcard sendiri untuk memberi tahu Linq bagaimana Anda cocok. Seperti apa
var q = (dari c dalam db. Pelanggan di mana SqlMethods.Like(c.CustomerID, "%ISSA") pilih c). ToList(); Contoh lain:
var q = (dari c dalam db. Pelanggan di mana SqlMethods.Like(c.CustomerID, "ARO%") pilih c). ToList(); Hal yang paling menakjubkan tentang SqlMethods.Like adalah Anda dapat mengimplementasikan wildcard di mana saja dengan ekspresi wildcard yang Anda tentukan sendiri. Seperti apa
var q = (dari c dalam db. Pelanggan di mana SqlMethods.Like(c.CustomerID, "A%O%T") pilih c). ToList(); SQL yang dihasilkannya adalah
PILIH [t0]. [ID Pelanggan], [t0]. [Nama Perusahaan], [t0]. [NamaKontak], [t0]. [KontakT itle], [t0]. [Alamat], [t0]. [Kota], [t0]. [Wilayah], [t0]. [Kode Pos], [t0]. [Dewan coba], [t0]. [Telepon], [t0]. [Faks] DARI [dbo]. [Pelanggan] SEBAGAI [t0] DI MANA [t0]. [ID Pelanggan] SEPERTI @p0 -- @p0: String Input (Ukuran = 5; Prec = 0; Skala = 0) [A%O%T]
Hal yang paling standar adalah mengetahui bahwa itu dimulai dengan A dan diakhiri dengan T, mengetahui nilai O di tengah, dan tidak tahu apa-apa lagi. Gunakan saja ini. SQL Server mendefinisikan empat wildcard, yang semuanya tersedia di sini. Mereka adalah: Contoh deskripsi karakter wildcard % Setiap string dengan nol atau lebih karakter. WHERE judul LIKE '%computer%' menemukan semua judul buku dengan kata 'komputer' di mana saja di judul buku. _ (garis bawah) Karakter tunggal apa pun. WHERE au_fname LIKE '_ean' menemukan semua nama depan empat huruf yang diakhiri dengan ean (Dean, Sean, dan sebagainya). [ ] Setiap karakter tunggal dalam rentang yang ditentukan ([a-f]) atau set ([abcdef]). DI MANA au_lname LIKE '[C-P]arsen' menemukan nama belakang penulis yang diakhiri dengan arsen dan dimulai dengan karakter tunggal antara C dan P, misalnya Carsen, Larsen, Karsen, dan sebagainya. [^] Setiap karakter tunggal yang tidak berada dalam rentang yang ditentukan ([^a-f]) atau set ([^abcdef]). DI MANA au_lname LIKE 'de[^l]%' semua nama belakang penulis dimulai dengan de dan di mana huruf berikut bukan l.
% mewakili string dengan panjang nol atau panjang apa pun. _ menunjukkan karakter. [] menunjukkan karakter dalam rentang rentang. [^] menunjukkan karakter yang tidak berada dalam rentang tertentu Seperti apa:
var q = (dari c dalam db. Pelanggan di mana SqlMethods.Like(c.CustomerID, "A_O_T") pilih c). ToList(); Cukup gunakan _ untuk mewakili karakter. SQL yang dihasilkan adalah:
PILIH [t0]. [ID Pelanggan], [t0]. [Nama Perusahaan], [t0]. [NamaKontak], [t0]. [KontakT itle], [t0]. [Alamat], [t0]. [Kota], [t0]. [Wilayah], [t0]. [Kode Pos], [t0]. [Dewan coba], [t0]. [Telepon], [t0]. [Faks] DARI [dbo]. [Pelanggan] SEBAGAI [t0] DI MANA [t0]. [ID Pelanggan] SEPERTI @p0 -- @p0: String Input (Ukuran = 5; Prec = 0; Skala = 0) [A_O_T]
Untuk Tidak Suka, ini juga sangat sederhana, cukup tambahkan omong kosong.
var q = (dari c dalam db. Pelanggan di mana ! SqlMethods.Like(c.CustomerID, "A_O_T") pilih c). ToList();
SqlMethods.Like juga memiliki parameter yang disebut karakter escape, yang akan diterjemahkan ke dalam pernyataan seperti berikut.
PILIH kolom DARI tabel TEMPAT kolom LIKE '%\%%' ESCAPE '\' Escape adalah karena bidang berisi karakter khusus, seperti %,_ [ ], yang digunakan sebagai karakter pengganti. Di situlah Escape masuk. Ini adalah hal SQL Server.
|