Ékezetes rendezés MySQL-ben

Hosszú idő óta tologatjuk a probléma megoldását, rendezzünk a magyar szabályok szerint mysql-ben: ismerje az ékezetes karaktereket, tudja a kétbetűsöket is: ly, ty, ny…, és ne legyen probléma a kis és nagybetű.

Legyen rá egy tárolt függvény: bármikor használható.

Ez lett a megfejtés(figyeljünk a charset-re):

CREATE DEFINER=`root`@`localhost` FUNCTION `orderer`(s varCHAR(255)) RETURNS varchar(255) CHARSET utf8
RETURN upper(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(replace(s,'á','azz')
,'í','izz'),'cs','czz'),'ly','lzz'),'é','ezz')
,'ó','oxx')
,'ö','oyy')
,'ő','ozz')
,'ty','tzz')
,'gy','gzz')
,'ú','uxx')
,'ü','uyy')
,'ű','uzz')
,'ny','nzz')
,'zs','zzz'))

Használat:

select * from tabla order by orderer(mezo) asc

Úgy tűnik működik. De talán már tudja a mysql is. Majd utánanézünk. :)

A bejegyzés kategóriája: Nincs kategorizálva
Kiemelt szavak: , , , .
Közvetlen link.

Ékezetes rendezés MySQL-ben bejegyzéshez 8 hozzászólás

  1. Pro hozzászólása:

    nem lesz ez így lassú a full table scan miatt?

  2. cadmagician hozzászólása:

    hát olyan, hogy kell, nem kell. valamért valami. hát biztos lassabb, de most egy nemtom 20-30 betűs varcharnál nem kritikus szerintem.

  3. maat hozzászólása:

    De akár be is állíthatod a tábla egybevetését magyarra, és az legalább a könyvtári betűrendhez közel van. Mert a tied az nem tudom, milyen, de szerintem sem a könyvtárinak, sem az mhszben definiáltnak nem felel meg.

  4. cadmagician hozzászólása:

    hát ha magyar az egybevetés, akkor azt tapasztaltam, eljátszadoztam vele:
    á=a ; A= a

    nem tudsz különbséget tenni.

    ezért minden utf8_bin, és ha kveri van, és nem kell különbség, használom a collate-t, és így jó.

  5. maat hozzászólása:

    Kipróbáltam az utf8_hungariant az mhsz példáival. Alapvetően jó, hibákat a hagyományos írásmódnál (“Kiss Ernő” szabály szerint előbb van, mint “Kis József”), a szóközöknél (hibásan figyelembe vette) és a kétjegyű betűknél találtam. Kis- és nagybetűt, ékezeteket jól kezeli.

  6. cadmagician hozzászólása:

    köszi, megnézzük.

  7. sarki_roka hozzászólása:

    ugye tudjátok hogy 44 betűs az abc-nk? bár gondolom nem nagy kunszt beleirni a méltánytalanul elfeledett “dz” és “dzs” betűket sem. az igazán nagy dobás akkor lenne hogy felismerné pl az olyan helyzetet mint a “vizszintes” szónál. másik – bár magyar szavakra nem jellemző, bár lehet hogy lehetne találni ilyet – szóval ahogy igy ránézésre értem, úgy úgy tűnik hogy hibás eredményt ad erre a két szóra: nagzzb – nagya. az elsőnek előrébb lenne a helye mint a másdiknak.
    na, mindenesetre ügyes próbálkozás :)

ITT és MOST VÁRJUK A HOZZÁSZÓLÁST!

Email cím (nem tesszük közzé) A kötelezően kitöltendő mezőket * karakterrel jelöljük

*

A következő HTML tag-ek és tulajdonságok használata engedélyezett: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>