Oracle 9 adatbázisban magyar ABC- szerinti rendezés hogyan ?
Hozzászólások
Ugye linuxon van a rendszer?
Mert ha igen, akkor a hiba a glibc-ben van, ott van rosszul definialva a magyar rendezesi sorrend. En nemreg futottam ebbe bele, csinaltam ra egy patchet, amit el is kuldtem a glibc-t fejleszto tarsasagnak, de egyelore a fuluk botjat sem mozgattak meg. A locale fileok leforditasa utan viszont erdekes helyzet allt fel, iso8859-2-ben tovabbra is rosszul rendez a linux, utf-8-ban viszont kivaloan :(.
Van egy kis problémám, hátha tudtok segíteni, illetve bármilyen tippeket szivesen veszek. :)
Előzmény:
Adott egy Oracle 9.2.0.1-es verziójú adatbázis szerver.
Megvan az adatbázis, amelynek a characterset-je: EE8MSWIN1250-es. Az NLS_LANG Hungarian és az NLS_SORT is Hungarian.
A kliensen a registry-ben az NLS_LANG=HUNGARIAN_HUNGARY.EE8MSWIN1250
Probléma:
A gond annyi, hogy ha a rekordokat rendezve kérdezik le az adatbázisból, az ékezetes betűket nem a magyar ABC-nek megfelelően rendezi. Tehát pl. Adat,Állam,Alma az Adat,Alma,Állam helyett. Szóval az ékezeteket nem veszi figyelembe az Oracle. Az NLS_SORT-ot átállították XHUNGARIAN-ra is, de itt "csak" annyi volt a különbség, hogy a 2 karakterből álló betüink, mint pl. a CS,SZ,TY a magyar ABC szerinti sorrendnek megfelelő helyre kerültek a rendezett listában, de az ékezeteket továbbra sem vette figyelembe az Oracle a rendezésnél. Habár az ékezetes betük megjelenítése tökéletes volt, a
rendezésük nem.
Szóval a kérdésem az lenne, hogy létezik-e a 9-es Oracle-ben ékezethelyes magyar rendezés, is ha igen, akkor ezt hogyan lehet beállítani? Próbálkoztunk más charakterset-tel is, pl. EE8ISO8859P2-vel is kifejezetten magyar
nyelvhez ajanlott karakterset-ekkel, de vagy az ékezetes betűk megjelenítése nem volt jó (itt a rendezést már nem is néztem), vagy a rendezésük.
A 10-es Oracle dokumentációjában találtak leírást többszintű rendezésről, ahol az 1. szintű rendezés az alap karakter, a 2. szintű az ékezetek, a 3. szintű pedig a speciális karakterek alapján történik. Ez alapján a 10-es Oracle-t már esélyesebbnek látnák az ékezetes betűk magyar ABC-nek megfelelő rendezésére, de most a fő kérdés, hogy van-e ilyen a 9-es Oracle-ben és ha van, akkor hogy lehet beállítani.
Most futottam bele, panaszkodtak felhasználók egy régi Oracle adatbázisból kapott lista kimenetére, ráguglizva találtam ezt a fórumot. Tovább keresgélve találtam, h megmagyarázhatóan így a helyes :) ennek megörülve gondoltam, itt is helye lenne ennek az infónak, mindegy, milyen régi téma.
Hozzászólások
Ugye linuxon van a rendszer?
Mert ha igen, akkor a hiba a glibc-ben van, ott van rosszul definialva a magyar rendezesi sorrend. En nemreg futottam ebbe bele, csinaltam ra egy patchet, amit el is kuldtem a glibc-t fejleszto tarsasagnak, de egyelore a fuluk botjat sem mozgattak meg. A locale fileok leforditasa utan viszont erdekes helyzet allt fel, iso8859-2-ben tovabbra is rosszul rendez a linux, utf-8-ban viszont kivaloan :(.
Sziasztok!
Van egy kis problémám, hátha tudtok segíteni, illetve bármilyen tippeket szivesen veszek. :)
Előzmény:
Adott egy Oracle 9.2.0.1-es verziójú adatbázis szerver.
Megvan az adatbázis, amelynek a characterset-je: EE8MSWIN1250-es. Az NLS_LANG Hungarian és az NLS_SORT is Hungarian.
A kliensen a registry-ben az NLS_LANG=HUNGARIAN_HUNGARY.EE8MSWIN1250
Probléma:
A gond annyi, hogy ha a rekordokat rendezve kérdezik le az adatbázisból, az ékezetes betűket nem a magyar ABC-nek megfelelően rendezi. Tehát pl. Adat,Állam,Alma az Adat,Alma,Állam helyett. Szóval az ékezeteket nem veszi figyelembe az Oracle. Az NLS_SORT-ot átállították XHUNGARIAN-ra is, de itt "csak" annyi volt a különbség, hogy a 2 karakterből álló betüink, mint pl. a CS,SZ,TY a magyar ABC szerinti sorrendnek megfelelő helyre kerültek a rendezett listában, de az ékezeteket továbbra sem vette figyelembe az Oracle a rendezésnél. Habár az ékezetes betük megjelenítése tökéletes volt, a
rendezésük nem.
Szóval a kérdésem az lenne, hogy létezik-e a 9-es Oracle-ben ékezethelyes magyar rendezés, is ha igen, akkor ezt hogyan lehet beállítani? Próbálkoztunk más charakterset-tel is, pl. EE8ISO8859P2-vel is kifejezetten magyar
nyelvhez ajanlott karakterset-ekkel, de vagy az ékezetes betűk megjelenítése nem volt jó (itt a rendezést már nem is néztem), vagy a rendezésük.
A 10-es Oracle dokumentációjában találtak leírást többszintű rendezésről, ahol az 1. szintű rendezés az alap karakter, a 2. szintű az ékezetek, a 3. szintű pedig a speciális karakterek alapján történik. Ez alapján a 10-es Oracle-t már esélyesebbnek látnák az ékezetes betűk magyar ABC-nek megfelelő rendezésére, de most a fő kérdés, hogy van-e ilyen a 9-es Oracle-ben és ha van, akkor hogy lehet beállítani.
Segítségeteket előre is köszönöm!
Üdv. vlacko
Nos, ez valójában tényleg feature és nem bug...
Bár szerintem is inkább zavaró, ettől még ez a helyes ABC sorrendbe rakás legalább 1984 (a helyesírási szabályzat 11. kiadása) óta:
https://helyesiras.mta.hu/helyesiras/default/akh12
"14. c)
A magánhangzók rövid-hosszú párjait jelölő betűk (a – á, e – é, i – í, o – ó, ö – ő, u – ú, ü – ű) betűrendbe soroláskor a kialakult szokás szerint mind a szavak elején, mind pedig a szavak belsejében azonos értékűnek számítanak. A hosszú magánhangzót tartalmazó szó tehát meg is előzheti a megfelelő rövid magánhangzót tartalmazót, például: ír, Irán, író"
Degeczi vagy így 18 év után :D
Most futottam bele, panaszkodtak felhasználók egy régi Oracle adatbázisból kapott lista kimenetére, ráguglizva találtam ezt a fórumot. Tovább keresgélve találtam, h megmagyarázhatóan így a helyes :) ennek megörülve gondoltam, itt is helye lenne ennek az infónak, mindegy, milyen régi téma.
Mondjuk így már van értelme :)
comment of the month candidate
Canonical equivalence?
Nem tudom, hogy oracle 9 tud-e ilyet, illetve ezekre a nyelvi beallitasokra mukodik-e.
https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch5lingsort.htm#…