Mysql按列与unicode字符排序

Bou*_*rne 4 mysql database database-design relational-database

我正在mysql表上运行一个select查询,并尝试通过表中的"name"列进行排序.
name列包含英文字符名称和拉丁字符的名称,如â.
我遇到了以下问题.
我运行的查询返回以下面的方式排序的结果,
例如:如果Name包含"archer","aaakash","âhayden","bourne","jason"
查询返回的结果按如下顺序排列
"aaakash ","弓箭手","干草","伯恩","杰森"

但是我想根据unicode代码点(如下所示)
"aaakash","archer","bourne","jason","âhayden" 进行订购

(请参阅命令中"干涉"的位置差异)
如何根据角色在unicode字符集中的位置对结果进行排序?

Syl*_*oux 7

但是我想根据unicode代码点(如下所示)订购它

要使用unicode代码点进行排序,您可能需要使用utf8_bin排序规则.

确切地说,_bin后缀表示按每个字符二进制表示进行排序.


要在订购时覆盖默认排序规则,您将使用ORDER BY ... COLLATE:

要解释文档:

SELECT k
FROM t1
ORDER BY k COLLATE utf8_bin;
Run Code Online (Sandbox Code Playgroud)

如果您的文本列并没有使用UTF8编码,您将有CONVERT它:

SELECT k
FROM t1
ORDER BY CONVERT(k USING utf8) COLLATE utf8_bin;
Run Code Online (Sandbox Code Playgroud)

请注意我utf8在这里用作示例,因为这是最常见的Unicode编码.但是你的MySQL服务器可能支持其他Unicode编码,如ucs2("UTF-16").