Autor | Zpráva | ||
---|---|---|---|
Jack Finger Profil |
#1 · Zasláno: 5. 4. 2009, 18:59:29
Dobrý večer,
chtěl bych se zeptat, zda lze nějak v SQL zapsat následující logiku: SELECT `column` FROM `table` ORDER BY `column` IF(IS_STRING(`column`)){ COLLATE 'utf8_...' } ASC tzn. když je sloupec column type varchar, char, text a podobné textové řetězce, vypíše se i COLLATE, jinak ne. Děkuji. |
||
Kajman_ Profil * |
#2 · Zasláno: 5. 4. 2009, 20:59:00
Co si nastavit collate pro spojení?
|
||
Jack Finger Profil |
#3 · Zasláno: 5. 4. 2009, 21:11:16
Kajman_
Myslíš mysql_query("SET NAMES utf8")? Mám databázi v UTF8, konkrétně utf8_bin. Po spojení volám výše napsané, vše funguje fajn. Jen bych potřeboval řadit záznamy podle české abecedy. COLLATE jsem si našel, ale mám napsanou třídu pro MySQL, kde potřebuju i univerzálně dosazovat do ORDER BY sloupce. jenže musím nějak rozpoznat, kdyje sloupec typu řetězec, protože pro INT a pod. mi to hází chybu: COLLATION 'utf8_czech_ci' is not valid for CHARACTER SET 'binary' |
||
Mastodont Profil |
#4 · Zasláno: 5. 4. 2009, 21:38:45 · Upravil/a: Mastodont
Jack Finger
Tak si do třídy doplň metodu pro rozpoznávání typů sloupců - spustíš "select * from table limit 1", na result použiješ mysql_fetch_fields a prozkoumáš výsledný objekt. Výsledek si někam nakešuj. |
||
Kajman_ Profil * |
#5 · Zasláno: 5. 4. 2009, 21:54:20
Měl jsem na mysli něco takového...
SET collation_connection utf8_czech_ci |
||
Jack Finger Profil |
#6 · Zasláno: 6. 4. 2009, 21:48:51
Mastodont
Tvé řešení funguje, taky jsem měl takový mlhavý nápad, ačkoliv jsem neznal funkce, tedy díky za ně! Ale přeci jen, pokud Kajman_ův způsob bude fungovat, asi to je efektivnější. Problém je ovšem v tom, že nefunguje. Asi to bude tím, že jsem nepochopil, co má tento SQL příkaz dělat a z manuálu jsem toho moc nepochopil. Mohl by mi to někdo prosím objasnit? Děkuji. |
||
Časová prodleva: 15 let
|
0