MS SQL Server Eğitimleri 31 – T-SQL LIKE Kullanımı
MS SQL Eğitimlerimize önemli bir konu LIKE operatörü ile devam ediyoruz.
LIKE önemli bir operatör çünkü Select işlemlerinde bizim sorgu yapma kabiliyetimizi artıran bir operatör.
Normal bir eşittir operatörüyle sorgu yaptığımızda veri tabanında sorgu için yazdığımız değerin aynısını arayacak ve ancak onu bulabilirse bir listeleme işlemi yapacaktır. Böyle olmasını istemediğimiz durumlar var ise ne yapacağız?
Örneğin isimler kolonundan ismi A ile başlayanları listelemek isteseydim. Ya da isminin içinde A geçen, yada isminin içinde ASA geçen vs vs böyle böyle çoğaltabileceğimiz pek çok arama kriterini ancak LIKE operatörü ile yapabiliriz.
Şimdi gelin bir kullanımına bakalım.
LIKE Kullanımı
1 |
SELECT * FROM TABLOİSMİ WHERE KOLONİSMİ LIKE '%ARANANDEĞER' |
Burada kullanımda vermiş olduğumuz tek tipliğe takılmayın. Aranan değer % nin önüne, arkasına, iki % arasına bile gelebilir. Bu tamamen sizin ne yapmak istediğinizle alakalıdır.
Şimdi örneklerimizle daha iyi anlaşılacak.
XENONBOX veri tabanımızdan CUSTOMER tablomızda sorgular yazalım.
İlk olarak baş harfi A olan kişileri listeleyelim.
1 |
SELECT * FROM CUSTOMER WHERE FIRSTNAME LIKE 'A%' |
2 | Ana | Trujillo | México D.F. | Mexico | (5) 555-4729 |
3 | Antonio | Moreno | México D.F. | Mexico | (5) 555-3932 |
19 | Ann | Devon | London | UK | (171) 555-0297 |
21 | Aria | Cruz | Sao Paulo | Brazil | (11) 555-9857 |
31 | André | Fonseca | Campinas | Brazil | (11) 555-9482 |
41 | Annette | Roulet | Toulouse | France | 61.77.61.10 |
52 | Alexander | Feuer | Leipzig | Germany | 0342-023176 |
69 | Alejandra | Camino | Madrid | Spain | (91) 745 6200 |
75 | Art | Braunschweiger | Lander | USA | (307) 555-4680 |
81 | Anabela | Domingues | Sao Paulo | Brazil | (11) 555-2167 |
Burada ‘A%’ ifadesini biraz incelemek gerekirse. Aranan kelimenin ilk harfinin A olmasına bakar. Diğer tüm karakterlerin yerini % ifadesi alır.
Şimdi birde son harfi K olan kişileri bulalım.
1 |
SELECT * FROM CUSTOMER WHERE FIRSTNAME LIKE '%K' |
91 | Zbyszek | Piestrzeniewicz | Warszawa | Poland | (26) 642-7012 |
Şimdi arada NT harflerinin geçtiği kişileri arayalım.
1 |
SELECT * FROM CUSTOMER WHERE FIRSTNAME LIKE '%NT%' |
3 | Antonio | Moreno | México D.F. | Mexico | (5) 555-3932 |
Like deyiminden sonra arama kriterine sadece % koymak o kolona ait tüm verileri getir demektir.
1 |
SELECT * FROM CUSTOMER WHERE FIRSTNAME LIKE '%' |
1 | Maria | Anders | Berlin | Germany | 030-0074321 |
2 | Ana | Trujillo | México D.F. | Mexico | (5) 555-4729 |
3 | Antonio | Moreno | México D.F. | Mexico | (5) 555-3932 |
4 | Thomas | Hardy | London | UK | (171) 555-7788 |
5 | Christina | Berglund | Luleå | Sweden | 0921-12 34 65 |
6 | Hanna | Moos | Mannheim | Germany | 0621-08460 |
7 | Frédérique | Citeaux | Strasbourg | France | 88.60.15.31 |
8 | Martín | Sommer | Madrid | Spain | (91) 555 22 82 |
9 | Laurence | Lebihan | Marseille | France | 91.24.45.40 |
10 | Elizabeth | Lincoln | Tsawassen | Canada | (604) 555-4729 |
LIKE İle OR ve AND Kullanımı
Like deyimi ile AND ve OR gibi ifadeleri beraber kullanarak aramalarda yapabiliriz.
1 |
SELECT * FROM CUSTOMER WHERE FIRSTNAME LIKE 'M%' AND CITY LIKE 'B%' |
1 | Maria | Anders | Berlin | Germany | 030-0074321 |
24 | Maria | Larsson | Bräcke | Sweden | 0695-34 67 21 |
NOT LIKE Kullanımı
Not Like, yazdığımızın zıttını getirecektir.
Yani eğer ‘A%’ ile bir arama yaparsak baş harfinda A olmayan herkesi getirecektir.
1 |
SELECT * FROM CUSTOMER WHERE FIRSTNAME NOT LIKE 'A%' |
1 | Maria | Anders | Berlin | Germany | 030-0074321 |
4 | Thomas | Hardy | London | UK | (171) 555-7788 |
5 | Christina | Berglund | Luleå | Sweden | 0921-12 34 65 |
6 | Hanna | Moos | Mannheim | Germany | 0621-08460 |
7 | Frédérique | Citeaux | Strasbourg | France | 88.60.15.31 |
8 | Martín | Sommer | Madrid | Spain | (91) 555 22 82 |
9 | Laurence | Lebihan | Marseille | France | 91.24.45.40 |
10 | Elizabeth | Lincoln | Tsawassen | Canada | (604) 555-4729 |
11 | Victoria | Ashworth | London | UK | (171) 555-1212 |
12 | Patricio | Simpson | Buenos Aires | Argentina | (1) 135-5555 |
13 | Francisco | Chang | México D.F. | Mexico | (5) 555-3392 |
Bir sonraki yazımda yine LIKE operatörüyle devam ediyor olacağız.