nem postgres volt a kerdes?
MySQL-ben nincs, mert ott alapbol ekezet erzeketlen (binary-val lehet kenyszeriteni)
Szoval, mysqlben S ELECT * FROM tabla WHERE mezo = 'tükör' kidobja az osszes rekordot, ahol mezo =
tükör, tükor,tukör,tukor
Ha azt akarod, hogy ne dobja ki, csak ahol egyezik az ekezet:
S ELECT * FROM tabla WHERE binary mezo = 'tükörgo'
postgresen:
S ELECT * FROM tabla WHERE mezo = 'tükör' csak a tükrös talalatokat adja vissza
S ELECT * FROM tabla WHERE mezo ILIKE 'tükör'
...es mire idaig jutottam, eszembe jutott, hogy az ILIKE nem az ekezettelenitest csinalja, hanem a case insensitiveseget. szoval hulyeseget irtam...
de amit irtam az igaz, mysql szarik az ekezetekre, ha nem binaryzol, akkor az ekezet nelkulit is kidobja talalatnak.
viszont googleztam kicsit, van unaccent tarolt eljaras neten, illetve ilyet is irtak:
to_ascii(convert(, 'LATIN2'), 'LATIN2')
ez elmeletileg ekezetteleniti a karaktereket (csak ugye multibytenal ez nem feltetlen a legjobb megoldas)
a tarolt eljarasos(pontosabban fuggveny):
CREATE FUNCTION unaccent(text) RETURNS text AS $$
BEGIN
RETURN translate($1, '\342\347\350\351\352\364\373', 'aceeeou')
; END; $$ LANGUAGE plpgsql IMMUTABLE STRICT;
es ekkor: S ELECT * FROM tabla WHERE unaccent(mezo) == 'tukor';
Bar lehet, hogy nem ilyen egyszeru, mar regen csinaltam ilyesmit.
Tyrael