如果我有一个列表1,2,3,4,5,K
并且我希望它像K,1,2,3,4,5
我如何在 SQL 中那样进行排序?这些值是 SQL 表中唯一的值。这是在 MySQL 中,但也欢迎其他数据库。
问问题
174 次
4 回答
5
mysql中没有整数检测功能,所以你必须做这样的事情。假设您的列是 varchar 之类的,您可以像这样简单
ORDER BY CASE WHEN field REGEXP '^-?[0-9]+$' THEN field ELSE '0'+field END
于 2012-05-01T20:09:07.227 回答
1
如果您需要对 SELECT 的结果进行排序,那么您可能只需在 ORDER BY 语句中声明您的自定义排序规则。
这是一个例子:http ://www.emadibrahim.com/2007/05/25/custom-sort-order-in-a-sql-statement/
这个想法是为每个项目分配您自己的优先级。
请记住,它可能取决于实际的 SQL 服务器。
于 2012-05-01T20:06:27.460 回答
1
在 Oracle 中,您可以执行以下操作:
ORDER BY CASE WHEN column='K' THEN 0 ELSE TO_NUMBER(column) END
其他系统大概也有类似的结构。
于 2012-05-01T20:05:46.243 回答
0
这是在 SQLite 中工作的一个:
select v1.* from (
select t3.*, (case when value = 'K' then '0' else value end) normalized_val
from t3) v1
order by v1.normalized_val;
于 2012-05-01T20:07:02.877 回答