SQL Dilinde Wildcards (Joker Karakterler) Kullanımı
LIKE operatörü ile birlikte kullanılarak, arama desenlerinin tanımlanmasında güçlü bir rol oynar. Bu kılavuz, SQL Wildcards'ın temel kullanımını, sözdizimini ve pratik örneklerini detaylandırmaktadır.Sözdizimi
SQL Wildcards, genellikle
LIKE operatörü ile birlikte kullanılır ve bir WHERE koşulunun parçası olarak bir sütundaki değerlerin belirli bir desene uyup uymadığını kontrol eder. Temel sözdizimi aşağıdaki gibidir:SELECT sütun_adları
FROM tablo_adı
WHERE sütun_adı LIKE desen;desen, bir veya daha fazla joker karakter içeren bir karakter dizisidir.
Detaylı Açıklama
SQL, desen eşleştirmesi için iki ana joker karakter sunar:
%(Yüzde İşareti): Sıfır veya daha fazla karakterle eşleşir. Bu joker karakter, bir metin dizisinin herhangi bir yerinde herhangi bir sayıda karakterin bulunabileceğini belirtmek için kullanılır. Örneğin,'A%''A' ile başlayan herhangi bir metinle eşleşirken,'%A''A' ile biten herhangi bir metinle eşleşir ve'%A%''A' karakterini içeren herhangi bir metinle eşleşir._(Alt Çizgi): Tam olarak tek bir karakterle eşleşir. Bu joker karakter, belirli bir pozisyonda herhangi bir karakterin olabileceğini, ancak o pozisyonun mutlaka dolu olması gerektiğini belirtmek için kullanılır. Örneğin,'A_Z', 'A' ile başlayıp 'Z' ile biten ve ortasında tam olarak tek bir karakter bulunan metinlerle (örneğin 'AAZ', 'ABZ', 'A1Z' gibi) eşleşir.
Bazı veritabanı sistemleri (örneğin, MS Access ve SQL Server), LIKE operatörü ile birlikte [], [^] ve [-] gibi ek joker karakterler sunabilir. Ancak bu kılavuz, tüm SQL standartlarında yaygın olarak desteklenen % ve _ karakterlerine odaklanmaktadır.
Pratik Kullanım Örnekleri
Aşağıdaki örnekler, bir
Musteriler tablosunda (MusteriID, Ad, Soyad, Sehir, Eposta sütunlarına sahip) joker karakterlerin nasıl kullanıldığını göstermektedir.Örnek 1: 'A' harfi ile başlayan müşteri adlarını bulma.
SELECT Ad, Soyad
FROM Musteriler
WHERE Ad LIKE 'A%';Bu sorgu, Ad sütunundaki değeri 'A' harfi ile başlayan tüm müşterileri getirir. Örneğin, 'Ayşe', 'Ali', 'Ahmet' gibi adlar eşleşecektir.
Örnek 2: 'n' harfi ile biten müşteri adlarını bulma.
SELECT Ad, Soyad
FROM Musteriler
WHERE Ad LIKE '%n';Bu sorgu, Ad sütunundaki değeri 'n' harfi ile biten tüm müşterileri listeler. Örneğin, 'Can', 'Asuman', 'Gülşen' gibi adlar eşleşecektir.
Örnek 3: Adında 'or' karakter dizisi geçen müşteri adlarını bulma.
SELECT Ad, Soyad
FROM Musteriler
WHERE Ad LIKE '%or%';Bu sorgu, Ad sütununda 'or' karakter dizisini herhangi bir konumda içeren tüm müşterileri getirir. Örneğin, 'Ozan', 'Doruk', 'Burak' gibi adlar eşleşebilir.
Örnek 4: Tam olarak 5 harfli ve 'e' ile biten müşteri adlarını bulma.
SELECT Ad, Soyad
FROM Musteriler
WHERE Ad LIKE '____e';Her bir alt çizgi (_) tek bir karakteri temsil ettiğinden, bu sorgu tam olarak 5 harfli olan ve son harfi 'e' olan adları (örneğin 'Emine', 'Ayşe') bulur.
Örnek 5: Soyadı 'B' ile başlayan, ikinci harfi herhangi bir şey olan ve üçüncü harfi 'l' olan müşterileri bulma.
SELECT Ad, Soyad
FROM Musteriler
WHERE Soyad LIKE 'B_l%';Bu sorgu, soyadı 'B' ile başlayıp, ikinci harfi herhangi bir karakter olup, üçüncü harfi 'l' olan ve sonrasında herhangi bir karakter dizisi (veya hiçbir şey) gelebilen soyadlarını eşleştirir. Örneğin, 'Balcı', 'Bilen', 'Bilgin' gibi soyadları eşleşebilir.
Örnek 6: Belirli bir e-posta domaininden olmayan müşterileri bulma.
SELECT Ad, Soyad, Eposta
FROM Musteriler
WHERE Eposta NOT LIKE '%@example.com';NOT LIKE operatörü, belirtilen desene UYMAYAN kayıtları seçmek için kullanılır. Bu örnek, e-posta adresi '@example.com' ile bitmeyen tüm müşterileri getirir.
Önemli Notlar
LIKEOperatörü: Wildcards, yalnızcaLIKEveyaNOT LIKEoperatörleri ile birlikte kullanıldığında özel anlam taşır. Diğer operatörlerle (örneğin=) kullanıldığında, joker karakterler literal karakterler olarak yorumlanır.Büyük/Küçük Harf Duyarlılığı: Wildcard desen eşleştirmesinin büyük/küçük harf duyarlılığı, kullanılan veritabanı sistemine ve sütunun kolaj ayarlarına bağlıdır. Bazı sistemler varsayılan olarak duyarsızken (örneğin SQL Server), bazıları duyarlıdır (örneğin PostgreSQL, MySQL). Duyarlılığı ayarlamak için genellikle
COLLATEanahtar kelimesi veya veritabanı yapılandırmaları kullanılır.Joker Karakterleri Literal Olarak Kullanma: Eğer deseninizde gerçekten bir
%veya_karakterini aramak istiyorsanız (yani joker karakter olarak değil, gerçek bir karakter olarak),ESCAPEanahtar kelimesi ile özel bir kaçış karakteri tanımlamanız gerekir. Örneğin:LIKE '50\% indirim' ESCAPE '\','50% indirim'metnini arar.Performans Etkileri: Bir desenin başında joker karakter kullanılması (örneğin
'%kelime'), veritabanının indeksleri etkin bir şekilde kullanmasını engelleyebilir ve bu da büyük tablolarda sorgu performansını olumsuz etkileyebilir. Mümkün olduğunda, desenleri bir joker karakterle başlatmaktan kaçınmak daha iyi bir uygulama olabilir.Gelişmiş Desen Eşleştirme: Bazı veritabanları (örneğin PostgreSQL, MySQL) daha karmaşık desen eşleştirme ihtiyaçları için düzenli ifadeleri (Regular Expressions) destekleyen
REGEXPveyaSIMILAR TOgibi operatörler sunar. Bu operatörler,LIKE'tan daha güçlü desen eşleştirme yetenekleri sağlar.
        
                
            
            
Yorum yap
Yorumlar