| 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: 16 let
|
|||
0