webForumDet fria alternativet

MySql och case insensitive ORDER BY

Databaser & SQL

9 svar · 340 visningar · startad av jme

Medlem sedan maj 20012 237 inlägg
Frågan#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

Medlem 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

Medlem sedan maj 20012 237 inlägg
#3

tack!

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

Medlem sedan maj 20012 237 inlägg
#4

Det blir fortfarande samma resultat, hmm.

Medlem sedan dec. 20041 043 inlägg
#5

Har du provat detta ?

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

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

Medlem 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
Medlem 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

Medlem 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.

Medlem 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

251 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)