webForumDet fria alternativet

MySql och case insensitive ORDER BY

9 svar · 340 visningar · startad av jme

jmeMedlem sedan maj 20012 237 inlägg
#1

Hej.

har följande sql-fråga:

SELECT username FROM user ORDER BY username;

Resultatet:

1
Mia
iii2
jme

Kan jag på nåt sätt få MySql att köra en case insensitive på de där så att resultatet blir:

1
iii2
jme
Mia

K@llenMedlem sedan mars 20032 667 inlägg
#2

Ute på ljupt vatten. Hittade detta:

On character type columns, sortinglike all other comparison operationsis normally per- formed in a case-insensitive fashion. This means that the order will be unde ned for columns that are identical except for their case. You can force a case-sensitive sort by using the BINARY cast: ORDER BY BINARY(field). To sort in reverse order, add the DESC (descending) keyword to the name of the column you are sorting by

Källa:
http://mysql.dyntex.com/mysql-manual_156.html

jmeMedlem sedan maj 20012 237 inlägg
#3

tack!

Jag hade faktikst ordet binary i minnet men men...

jmeMedlem sedan maj 20012 237 inlägg
#4

Det blir fortfarande samma resultat, hmm.

SpookMedlem sedan dec. 20041 043 inlägg
#5

Har du provat detta ?

SELECT username FROM user ORDER BY username ASC;
jmeMedlem sedan maj 20012 237 inlägg
#6

japp och vad jag vet så körs alla frågor i MySql som default med ASC.

SpookMedlem sedan dec. 20041 043 inlägg
#7

Har denna typen på ett flertal sidor med gott resultat.

Select users From TABLE Order By NAME ASC", conn, 3, 3
K@llenMedlem sedan mars 20032 667 inlägg
#8

Läs även i manualen hur det är tänkt att fungera:
http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html

Speciellt dessa stycke:

On character type columns, sorting — like all other comparison operations — is normally performed in a case-insensitive fashion. This means that the order is undefined for columns that are identical except for their case. You can force a case-sensitive sort for a column by using BINARY like so: ORDER BY BINARY col_name.

The default sort order is ascending, with smallest values first. To sort in reverse (descending) order, add the DESC keyword to the name of the column you are sorting by

jmeMedlem sedan maj 20012 237 inlägg
#9

" You can force a case-sensitive sort for a column by using BINARY like so: ORDER BY BINARY col_name."

Äsch, läste fel då. Men jag vet inte varför det inte funkar.

jmeMedlem sedan maj 20012 237 inlägg
#10

Aha! Jag hade latin1_bin som collation. Ändrade det till latin1_swedish... och nu blir det rätt.

EDIT: är kanske bättre att köra med latin1_general_ci

137 ms totalt · 3 externa anrop · v20260731065814-full.37765c92
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)