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 归类允许按完整字符串排序。
我有一个包含文本的列,按 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 归类允许按完整字符串排序。