Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 20728|Jawab: 0

[Sumber] Seperti kueri fuzzy di Linq ke sql

[Salin tautan]
Diposting pada 07/09/2015 23.16.28 | | |
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.





Mantan:Pengoptimalan Kinerja Situs Web: Penjelasan terperinci tentang pengaturan kontrol cache
Depan:Ruijie selalu menentukan apa yang terjadi
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com