0

テーブルにいくつかのエントリがあります。

id txt
1 phone
2 phone
3 phone
4 Phone
5 Phone
6 PHONE
7 phone
8 aaa
9 ZZZ
10 ééé

そして私はこの要求があります

select * from table order upper(txt) collate utf8_bin

8aaa10ééé1電話2電話3電話4電話5電話6電話7電話9ZZZ

別の注文を行う必要があります。このエントリ(1,2,3,4,5,6,7)は、大文字と小文字を区別するケースを注文しました。

私はこの結果が欲しいです:

8 aaa
10 ééé
6 PHONE ===> CAPITAL
4 Phone ===> Capital
5 Phone ===> Capital
1 phone
2 phone
3 phone
7 phone
9 ZZZ

また、collat​​ecollat​​eutf8_binを使用する必要があります

4

1 に答える 1

3

これをORDERBY句として使用します。これにより、最初にすべてのtxtの大文字と小文字が区別されない順序になり、すべての名前が順番に取得されます。次に、大文字と小文字を区別して(バイナリで)DESC順に並べ替え、同じ小文字の名前を最初に配置します。バイナリソートでは小文字の前に大文字が配置されるため、DESCを使用する必要があります。

ORDER BY txt, binary(txt) DESC
于 2012-11-13T14:15:44.633 に答える