Takip et

MySQL Büyük Küçük Harf Duyarsız Arama İşlemi {LIKE}

Merhaba herkese. Bu yazımda MySQL sorgularında sıkça ortaya çıkan bir problemden bahsetmek istiyorum sizlere.

Normal olarak sorgu içerisinde kullandığınız LIKE komutu MySQL veritabanlarında büyük küçük harf duyarlı vaziyettedir. Bu da kullanıcı tarafında istenmeyen bir durumdur. Bunu çözmenin birçok yolu var. Arama kısmından alınan verinin süzülüp query içerisine yansıtılması bunlardan biri örneğin. Ama iyi bir veritabanı yapısı developer’a her zaman en az iş yükünü doğurandır. Yani kod tarafında extra bir çalışma yapmadan bu işlemi gerçekleştirmek mümkün. Nasıl mı? Örneğin bir örnek üzerinden gidelim.

SELECT * FROM trees WHERE trees.`title` LIKE  '%elm%'

Yukarıda görmüş olduğunuz sorgu MySQL 5 üzerinde sadece küçük harf duyarlı çalışır. Yani tablo üzerinde ‘Elma’ yada ‘ELMA’ varsa bunları yakalamaz.

Çözüm

SELECT  *
FROM    trees
WHERE   trees.`title` COLLATE UTF8_GENERAL_CI LIKE '%elm%'

Aslında, tablo sütun tanımına COLLATE UTF8_GENERAL_CI eklerseniz, işlem otomatik olarak istediğimiz düzeyde çalışır. Tabi tablo karakter kodlamanız UTF-8 olmalıdır. Değil ise aşağıdaki sorgu yardımıyla hızlıca güncelleyebilirsiniz.

ALTER TABLE trees 
 MODIFY COLUMN title VARCHAR(…) CHARACTER 
 SET UTF8 COLLATE UTF8_GENERAL_CI.

Not: Bu işlem tablo sütun dizinlerini yeniden oluşturacak. Bundan dolayı işlem öncesinde veritabanı yedeği almanızı tavsiye ederim.

Yöntem 2 (Bonus)

SELECT * FROM <trees> WHERE LOWER(<title>) LIKE LOWER('%<elm>%')

 

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorumları Göster (1)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version