Autor | Zpráva | ||
---|---|---|---|
kubik Profil |
#1 · Zasláno: 23. 1. 2011, 22:27:02
Mám v MySQL seznam latinských názvů rostlin, které obsahují apostrofy. Záznamy s apostrofy se však předřazují těm ostatním. Nevíte prosím někdo, jak ta data seřadit, aby se jakoby ty apostrofy (případně jiné znaky) ignorovaly?
Ukázka seznamu po obyčejném seřazení: Saxifraga 'Cecil Davis' Saxifraga 'Cockscomb' Saxifraga 'Portae' Saxifraga callosa (S. lingulata) Saxifraga callosa var. lantoscana Saxifraga cartilaginea hybr. Saxifraga cochlearis 'Major' |
||
Marek88 Profil |
#2 · Zasláno: 24. 1. 2011, 00:30:57 · Upravil/a: Marek88
EDIT: Teď mi došlo, že kubik psal, že data má v mysql a proto je lepší je řadit už při jejich získávání z db. Moje řešení to řadí až na úrovni php.
Napadlo mě přiřadit vytvořit pole, kde bude jako klíč sloužit název rostliny upravený (odstranění nežádoucích znaků) pomocí preg_replace na potom použít funkci na řazení pole podle klíče. Ale jsou i jiné (možná lepší) funkce, kde si můžete vytvořit vlastní pravidla pro řazení. Třeba uasort. Konkrétně tenhle příklad je podobný vašemu problému: <?php $fruits = array('Orange9','Orange11','Orange10','Orange6','Orange15'); uasort ( $fruits , function ($a, $b) { return strnatcmp($a,$b); // or other function/code } ); print_r($fruits); ?> returns Array ( [3] => Orange6 [0] => Orange9 [2] => Orange10 [1] => Orange11 [4] => Orange15 ) |
||
Časová prodleva: 7 dní
|
|||
kubik Profil |
#3 · Zasláno: 30. 1. 2011, 20:49:29
Díky Marek88 za odpověď, ale na úrovni php to není ono. Navíc nevím, jak by to dopadlo s tím polem, vzhledem k tomu, že se jedná řádově o několik tisíc položek.
Nicméně jsem nakonec, zdá se, našel řešení s využitím MySQL funkce REPLACE(), viz http://dev.mysql.com/doc/refman/5.5/en/string-functions.html: SELECT * FROM rostliny ORDER BY REPLACE(REPLACE(nazevlat1,'\'',''),' x ',' ') Pro upřesnění - potlačuji nejen apostrofy (vnořený REPLACE), ale i sekvence " x ", které se používají u kříženců (nebo co to je). Ukázka několika řádků před: Saxifraga 'Cecil Davis' Saxifraga 'Cockscomb' Saxifraga bronchialis Saxifraga caespitosa 'Findling' Saxifraga cherlerioides var. rebushirensis Saxifraga juniperifolia 'Brotheri' Saxifraga x arendsii 'White Pixie' Saxifraga x irvingii 'Jenkinsiae' a po: Saxifraga x arendsii 'White Pixie' Saxifraga bronchialis Saxifraga caespitosa 'Findling' Saxifraga 'Cecil Davis' Saxifraga cherlerioides var. rebushirensis Saxifraga 'Cockscomb' Saxifraga x irvingii 'Jenkinsiae' Saxifraga juniperifolia 'Brotheri' |
||
Časová prodleva: 13 let
|
0