我有一个包含文本的列,按ascii排序,其顺序如下:
- (hyphen)01 (numbers)2A (uppercase)B_ (underscore)ab (lowercase)c
- (hyphen)
0
1 (numbers)
2
A (uppercase)
B
_ (underscore)
a
b (lowercase)
c
但其订购方式如下:
- (hyphen)01 (numbers)2ab (lowercase)cAB (uppercase)C_ (underscore)
A
B (uppercase)
C
如何按ascii值排序?
x3naxklr1#
您可以使用ascii:
SELECT *FROM tabORDER BY ASCII(col_name) ASC
SELECT *
FROM tab
ORDER BY ASCII(col_name) ASC
iq0todco2#
排序顺序由排序规则控制。您可以使用二进制排序规则按原始字节排序,对于ascii数据,这将导致它按ascii值排序。看到了吗https://dev.mysql.com/doc/refman/5.7/en/sorting-rows.html
SELECT ...FROM mytableORDER BY BINARY mycolumn
SELECT ...
FROM mytable
ORDER BY BINARY mycolumn
这将比使用 ASCII() 函数,因为该函数只返回第一个字符的ascii值。使用二进制排序允许按完整字符串排序。
ASCII()
2条答案
按热度按时间x3naxklr1#
您可以使用ascii:
iq0todco2#
排序顺序由排序规则控制。您可以使用二进制排序规则按原始字节排序,对于ascii数据,这将导致它按ascii值排序。看到了吗https://dev.mysql.com/doc/refman/5.7/en/sorting-rows.html
这将比使用
ASCII()
函数,因为该函数只返回第一个字符的ascii值。使用二进制排序允许按完整字符串排序。