3 votes

MySQL ne veut pas ORDER BY caractères suédois åäö ne fonctionne pas même si la collation est correcte

Cette requête :

SELECT customer_id, customer_name FROM customers WHERE isActive = '1' ORDER BY customer_name ASC

Sorties :

+-------------+-----------------------+
| customer_id | customer_name         |
+-------------+-----------------------+
|           1 | Äname                 |
|           2 | Aname                 |
|           3 | Bname                 |
+-------------+-----------------------+

Pourquoi les caractères spéciaux suédois ne sont pas triés, alors que j'ai choisi la collation. utf8_swedish_ci

SHOW TABLE STATUS FROM myDatabase WHERE name = 'customers';

+-------------+----------------------------+
| Name        | Engine   | Collation       |
+-------------+----------------------------+
| customers   | MyISAM   | utf8_swedish_ci |
+-------------+----------------------------+

J'ai même essayé de mettre la collation dans ma requête :

SELECT * FROM customers WHERE isActive = 1 COLLATE utf8_swedish_ci ORDER BY customer_name ASC

Mais ensuite, je comprends :

Error Code: 1253. COLLATION 'utf8_swedish_ci' is not valid for CHARACTER SET 'binary'

4voto

Álvaro G. Vicario Points 57607

Aucune idée du comportement par défaut, mais la syntaxe correcte est :

SELECT customer_id, customer_name
FROM customers
WHERE isActive = '1'
ORDER BY customer_name COLLATE utf8_swedish_ci ASC

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X