我的表中有一个存储字符串的列(它是一个文本列):
VARCHAR(16) latin1_swedish_ci
问题是,当我说“ORDER BY name ASC”时,它会返回以结尾的下划线开头的单词。这是它返回的一个例子:
-a
-mmddd2
-z
-z3
aaa
b
c
t
_a
___-
我打赌我可以使用php进行排序,但是有一种简单的方法可以让mySQL在破折号后加下划线吗?我这样做,所以它将匹配javascript排序函数的输出。
我想要:
-a
-mmddd2
-z
-z3
_a
___-
aaa
b
c
t
答案 0 :(得分:5)
Collations定义排序顺序,如果没有可用的排序规则使用您可以定义自己的排序顺序,如here所述。
答案 1 :(得分:1)
我不是说这是一个优雅的解决方案,但你可以尝试这样做:
select name
from customers
order by replace(name, '_', '-+') asc;
只需将+替换为破折号后面的前缀下划线值。