MYSQL - 按 ASCII 值对列进行排序

MYSQL - Order column by ASCII Value

我有一个包含文本的列,按 ASCII 排序,它应该排序为:

-  (hyphen)
0
1  (numbers)
2
A  (uppercase)
B
_  (underscore)
a
b  (lowercase)
c

然而它被订购为:

-  (hyphen)
0
1  (numbers)
2
a
b  (lowercase)
c
A
B  (uppercase)
C
_  (underscore)

如何按 ASCII 值排序?

你可以使用 ASCII:

SELECT *
FROM tab
ORDER BY ASCII(col_name) ASC

排序顺序由排序规则控制。您可以使用 BINARY 排序规则按原始字节排序,对于 ASCII 数据,这将导致它按 ASCII 值排序。参见 https://dev.mysql.com/doc/refman/5.7/en/sorting-rows.html

SELECT ...
FROM mytable
ORDER BY BINARY mycolumn

这将比使用 ASCII() 函数更灵活,因为该函数仅 returns 第一个字符的 ASCII 值。使用 BINARY 归类允许按完整字符串排序。