DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   Sortiranje po UTF-8, ћирилица + latinica (http://www.devprotalk.com/showthread.php?t=3516)

nn.nn 13. 09. 2007. 16:41

Sortiranje po UTF-8, ћирилица + latinica
 
Ima li neka baza koja može da sortira UTF-8 tekst na srpskom pisan mešovito, ćirilicom i latinicom, tako da u rezultatu ne pravi razliku između ta dva pisma, odnosno da č bude pored ч, ć pored ћ itd?

Kako to ide sa malim i velikim slovima?

Da li onda može da se bira između azbučnog i abecednog sortiranja?

Ako ne može tako, da li je neko ovo rešio na drugi način?

McChoban 25. 09. 2007. 01:12

Nisam toliki znalac za baze, mozda je i moguce, ali moje resenje bi bilo da pokupim podatke pa ih sortiram naknadno.

Primeni neki sort algoritam, ali mu stavi komparator koji ce da koristi string za poredjenje
tipa, ako je php, postoji funkcija usort();


PHP kôd:


// prvo napravimo komparator, koji vraca 1 ako je prvi veci od drugog, -1 ako je manji, i 0 ako su jednaki.

function komparator($str1$str2) {
if (
$str1 == $str2) {
return 
0;
// da skratimo posao, prvo provedimo dal' su jednaki

$cmp "aаbбvвgгdдđђ...."// itd - string koji sadrzi poredjana cir. i lat. slova.

$len1 strlen($str1); $len2 strlen($str2);
$len = ($len1 <= $len2) ? $len1 $len2// duzina petlje jednaka duzini kraceg stringa

for ($i 0$i $len$i++) {
$chr1 strtolower($str1[$i]); // uzimamo i-ti karakter stringa
$chr2 strtolower($str2[$i]);
if (
strpos($cmp$chr1) > strpos($cmpchr2)) {
return 
1;
} else if (
strpos($cmp$chr1) < strpos($cmpchr2)) {
return -
1;

}

// ako su stringovi identicni do duzine kraceg, onda smo se nasli ovde

if ($len1 $len2) {
return 
1;
} else if (
$len2 $len1) {
return -
1;
}

// ako smo se nasli ovde, onda su identicni i jednakih duzina
// pa posto smo to proverili na pocetku, to znaci da nikako ne bi trebalo ovde da se nadjemo :)

return 0;
}

// sad pozovemo usort na nizu koji sortiramo, i prosledimo naziv komparatora kao argument

usort($array"komparator"); 

U slucaju jave je slicno, imas Collections.sort() i napravis mu comparator, slican ovom iz php-a samo se malo drugacije operise sa stringovima.

Naravno ako neko ima SQL-only resenje, bio bih odusevljen da ga vidim :1094:

Pedja 25. 09. 2007. 10:48

Citat:

Originalno napisao nn.nn (Napišite 42303)
Ima li neka baza koja može da sortira UTF-8 tekst na srpskom pisan mešovito, ćirilicom i latinicom, tako da u rezultatu ne pravi razliku između ta dva pisma, odnosno da č bude pored ч, ć pored ћ itd?

Moze to i MySQL samo moras da isprogramiras odgovarajuci modul i iskompajliras ga u MySQL...

nn.nn 25. 09. 2007. 13:48

Citat:

Originalno napisao Pedja (Napišite 43127)
Moze to i MySQL samo moras da isprogramiras odgovarajuci modul i iskompajliras ga u MySQL...

Znači, nema ništa gotovo? Našao sam negde izjavu Siniše Milovanovića (MySQL AB) u kojoj pominje da su Hrvati uradili odličan modul za tu namenu, samo što tu nema pola mojih zahteva - ćirilica.

Pedja 26. 09. 2007. 01:00

Mozda su uradili, ali meni nije uspelo ni latinicu da sortira kako valja :)


Vreme je GMT +2. Trenutno vreme je 22:57.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.