2011-12-27 24 views
17

Arama sorgusu aksanı duyarsız hale getirmenin bir yolu var mı?Accent duyarsız arama sorgusu MySQL

Sütun ve tabloların harmanları utf8_polish_ci'dir ve bunları değiştirmek istemiyorum.

örnek kelime: Torun

select * from pages where title like '%torun%' 

O "Torun" bulmamaktadır. Bunu nasıl yapabilirim?

+1

http://stackoverflow.com/questions/2302813/normalizing-accented-characters-in-mysql-queries – Sun

+0

@SunWKim Bunu daha önce denedim ama benim için çalışmadı. – ocanal

+0

@ocanal Bizimle paylaşabileceğiniz bir çözüm buldunuz mu? – zvzej

cevap

17

,

...where title like '%torun%' collate utf8_general_ci 

ama zamanında anında harmanlama değiştirilirken bir dizini kullanarak mysql olasılığını forgoes sakının, bu yüzden büyük tablolarda performans olabilir korkunç. Veya, sütunu searchable_title gibi başka bir sütuna kopyalayabilirsiniz, ancak bunun üzerinde harmanlamayı değiştirebilirsiniz. Aslında, veri kopyaladığınız, ancak belirli bir iş yükü/amacı için optimize edilmiş biraz farklı bir biçimde sahip olduğunuz bu türden bir şeyler yapmak yaygındır. Tetikleyicileri, çoğaltılmış sütunları senkronize halde tutmak için iyi bir yol olarak kullanabilirsiniz. Bu yöntem endekslenmişse iyi performans gösterme potansiyeline sahiptir.

Not - db'nizin gerçekten bu karakterlere sahip olduğundan ve html öğelerinin olmadığından emin olun. Ayrıca, bağlantınızın karakter takımı önemlidir. Yukarıda, sen gerçek değerine

...where title like _utf8'%torun%' collate utf8_general_ci 

ve tabii ki bir introducer gerekmez Eğer set names utf8

gibi set names yoluyla, örneğin, utf8 şekilde ayarlanmış varsayar tek tırnak içinde değeri aslında olmalıdır sql sorgusunun geri kalanı olmasa bile utf8 kodlanmış.

+1

Niçin işe yaramadığını bilmiyor musunuz? Ł (Łódź'da aksan gibi cila ile L)? '... nerede _utf8 '% lodz%' gibi şehir utf8_general_ci' harmanlıyor – suz

4

Bu, aşırı koşullarda çalışmaz, ancak sütun harmanlamasını UFT8 utf8_unicode_ci olarak değiştirmeye çalışın. Ardından vurgulu karakterler aksanlı olmayan meslektaşlarına eşit olacaktır. Sen sql sorgusunda zamanında harmanlamayı değiştirebilir