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字符集中的位置对结果进行排序?
但是我想根据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").