Like'ın işleyişi biraz 'in' gibi, ama yön değişti. Ne anlama geliyor? Bir dizi verirsiniz ve veride bu diziyi içeren bir alan ararsınız. Yani, verilen bir dizi bir alanın alt kümesidir. SQL scrip{filter}t böyle yazılır.
Selec * tablodan '%AD%' gibi id' Selec * tablodan, '%AD' gibi id' Selec * 'AD%' gibi olan tablodan Yukarıdaki %, alanda bir değer içerdiğini ve bilinmeyen konumun %'ye yer aldığını gösteren joker karttır; Birincisi, orta bölümün AD olduğunu ve iki ucunun net olmadığını belirtmektir. İkincisi ise sonunda AD, önceki ise net değil. Üçüncüsü ise tam tersine, AD ile başlar ve belirsiz bir şekilde sona erer. Karşılık gelen Linq ifadesi şudur:
var q = (db'deki c'den. Müşteriler burada c.CustomerID.Contains("ROUT") C seçin). ToList(); Ürettiği SQL ise
[t0]'ı SEÇ. [CustomerID], [t0]. [Şirket Adı], [t0]. [İletişimName], [t0]. [ContactT itle], [t0]. [Adres], [t0]. [Şehir], [t0]. [Bölge], [t0]. [Posta Kodu], [t0]. [Meclis try], [t0]. [Telefon], [t0]. [Faks] [dbo]'dan. [Müşteriler] AS [t0] BURADA [t0]. [CustomerID] MESELA @p0 -- @p0: Giriş dizisi (boyut = 6; Prec = 0; Ölçek = 0) [%ROUT%] ISSA ile bitiyor, baş wildcard:
var q = (db'deki c'den. Müşteriler burada c.CustomerID.EndsWith("ISSA") C seçin). ToList(); Ürettiği SQL ise
[t0]'ı SEÇ. [CustomerID], [t0]. [Şirket Adı], [t0]. [İletişimName], [t0]. [ContactT itle], [t0]. [Adres], [t0]. [Şehir], [t0]. [Bölge], [t0]. [Posta Kodu], [t0]. [Meclis try], [t0]. [Telefon], [t0]. [Faks] [dbo]'dan. [Müşteriler] AS [t0] BURADA [t0]. [CustomerID] MESELA @p0 -- @p0: Giriş dizisi (boyut = 5; Prec = 0; Ölçek = 0) [%ISSA] ARO ile başlayarak, kuyruk joker kartı:
var q = (db'deki c'den. Müşteriler burada c.CustomerID.StartsWith("ARO") C seçin). ToList(); Ürettiği SQL ise
[t0]'ı SEÇ. [CustomerID], [t0]. [Şirket Adı], [t0]. [İletişimName], [t0]. [ContactT itle], [t0]. [Adres], [t0]. [Şehir], [t0]. [Bölge], [t0]. [Posta Kodu], [t0]. [Meclis try], [t0]. [Telefon], [t0]. [Faks] [dbo]'dan. [Müşteriler] AS [t0] BURADA [t0]. [CustomerID] MESELA @p0 -- @p0: Giriş dizisi (Boyut = 4; Prec = 0; Ölçek = 0) [ARO%]
Linq ayrıca System.Data.Linq.SqlClient isim alanının önce eklenmesini gerektiren SqlMethods.Like adlı bir yöntem sunar. Yukarıdaki üçü yazılabilir
var q = (db'deki c'den. Müşteriler burada SqlMethods.Like(c.CustomerID, "%ROUT%") C seçin). ToList(); Burada, Linq'a nasıl eşleştiğinizi söylemek için joker kartı kendiniz doldurmanız gerekiyor. Ne gibi?
var q = (db'deki c'den. Müşteriler burada SqlMethods.Like(c.CustomerID, "%ISSA") C seçin). ToList(); Başka bir örnek:
var q = (db'deki c'den. Müşteriler burada SqlMethods.Like(c.CustomerID, "ARO%") C seçin). ToList(); SqlMethods.Like'ın en şaşırtıcı yanı, kendi tanımlanmış joker ifadelerinizle her yerde joker kart uygulayabilmenizdir. Ne gibi?
var q = (db'deki c'den. Müşteriler burada SqlMethods.Like(c.CustomerID, "A%O%T") C seçin). ToList(); Ürettiği SQL ise
[t0]'ı SEÇ. [CustomerID], [t0]. [Şirket Adı], [t0]. [İletişimName], [t0]. [ContactT itle], [t0]. [Adres], [t0]. [Şehir], [t0]. [Bölge], [t0]. [Posta Kodu], [t0]. [Meclis try], [t0]. [Telefon], [t0]. [Faks] [dbo]'dan. [Müşteriler] AS [t0] BURADA [t0]. [CustomerID] MESELA @p0 -- @p0: Giriş dizisi (boyut = 5; Prec = 0; Ölçek = 0) [A%O%T]
En standart şey, A ile başlayıp T ile bittiğini, ortada O değerini bildiğini ve başka bir şey bilmediğini bilmektir. Sadece bunu kullan. SQL Server dört joker tanımlar, bunların hepsi burada mevcuttur. Bunlar şunlardır: Wildcard karakter Descrip{filter}tion Örnek % Sıfır veya daha fazla karakterden oluşan herhangi bir dizidir. BURADA '%computer%' gibi başlık, kitap başlığında 'computer' kelimesi olan tüm kitap başlıklarını bulur. _ (altını çizer) Herhangi bir tek karakter. WHERE au_fname LIKE '_ean' kelimesi, ean ile biten dört harfli ilk isimleri (Dean, Sean vb.) bulur. [ ] Belirtilen aralık ([a-f]) veya küme ([abcdef]) içindeki herhangi bir tek karakter. BURADA au_lname LIKE '[C-P]arsen' yazar soyadlarının arsen ile bittiğini ve C ile P arasındaki herhangi bir karakterle başladığını görür; örneğin Carsen, Larsen, Karsen ve benzeri. [^] Belirtilen aralıkta ([^a-f]) veya kümede ([^abcdef]) olmayan herhangi bir tek karakter. BURADA au_lname 'de[^l]%' gibi tüm yazar soyadları de ile başlar ve sonraki harf l değildir.
%, sıfır uzunlukta veya herhangi bir uzunlukta bir diziyi temsil eder. _ bir karakteri gösterir. [] bir karakteri bir aralık aralığında gösterir. [^] belirli bir aralıkta olmayan bir karakteri gösterir Mesela ne:
var q = (db'deki c'den. Müşteriler burada SqlMethods.Like(c.CustomerID, "A_O_T") C seçin). ToList(); Bir karakteri temsil etmek için _ kullanın. Üretilen SQL şöyledir:
[t0]'ı SEÇ. [CustomerID], [t0]. [Şirket Adı], [t0]. [İletişimName], [t0]. [ContactT itle], [t0]. [Adres], [t0]. [Şehir], [t0]. [Bölge], [t0]. [Posta Kodu], [t0]. [Meclis try], [t0]. [Telefon], [t0]. [Faks] [dbo]'dan. [Müşteriler] AS [t0] BURADA [t0]. [CustomerID] MESELA @p0 -- @p0: Giriş dizisi (boyut = 5; Prec = 0; Ölçek = 0) [A_O_T]
Not Like için de çok basit, sadece bir saçmalık ekle.
var q = (db'deki c'den. Müşteriler nerede! SqlMethods.Like(c.CustomerID, "A_O_T") C seçin). ToList();
SqlMethods.Like ayrıca escape karakter adı verilen bir parametreye sahiptir ve bu parametre aşağıdaki gibi bir ifadeye çevrilecektir.
TABLODAN sütunları SEÇİN, BURADA sütun LIKE '%\%%' KAÇ '\' Escape, bir alanın %,_ [ ] gibi özel karakterler içermesinden kaynaklanır ve bunlar joker olarak kullanılır. İşte burada Escape devreye giriyor. Bu SQL Server meselesi.
|