MYSQL - 按ASCII值排序列

hta*_*oya 5 mysql sql ascii sql-order-by

我有一个带有文本的列,按ASCII排序,应按以下顺序排序:

-  (hyphen)
0
1  (numbers)
2
A  (uppercase)
B
_  (underscore)
a
b  (lowercase)
c
Run Code Online (Sandbox Code Playgroud)

但它被命令为:

-  (hyphen)
0
1  (numbers)
2
a
b  (lowercase)
c
A
B  (uppercase)
C
_  (underscore)
Run Code Online (Sandbox Code Playgroud)

如何按ASCII值进行排序?

Luk*_*zda 5

你可以使用ASCII

SELECT *
FROM tab
ORDER BY ASCII(col_name) ASC
Run Code Online (Sandbox Code Playgroud)


Bil*_*win 5

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

SELECT ...
FROM mytable
ORDER BY BINARY mycolumn
Run Code Online (Sandbox Code Playgroud)

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