【发布时间】:2011-01-31 00:02:56
【问题描述】:
我想知道在执行 ORDER BY 时是否有办法让字母数字字符的优先顺序高于符号。
I.E. 'a' 出现在 '(' 之前
有很多方法可以解决这个问题,但我更喜欢最优雅的数据库方法。
【问题讨论】:
-
第二个。这是定义自定义排序规则的方法dev.mysql.com/doc/refman/5.1/en/…
标签: mysql sorting sql-order-by collation
我想知道在执行 ORDER BY 时是否有办法让字母数字字符的优先顺序高于符号。
I.E. 'a' 出现在 '(' 之前
有很多方法可以解决这个问题,但我更喜欢最优雅的数据库方法。
【问题讨论】:
标签: mysql sorting sql-order-by collation
这将为您提供所需的输出。
SELECT <column_name>
FROM <table_name>
ORDER BY CASE
WHEN <column_name> REGEXP '^[a-z]' OR <column_name> REGEXP '^[A-Z]' THEN CONCAT('1',<column_name>)
WHEN <column_name> REGEXP '^[0-9]' THEN CONCAT('2',<column_name>)
ELSE CONCAT(3, <column_name>)
END;
它将首先占用字母,然后是数字,最后是其他字符。
【讨论】: