2

如果我有一个列表1,2,3,4,5,K并且我希望它像K,1,2,3,4,5我如何在 SQL 中那样进行排序?这些值是 SQL 表中唯一的值。这是在 MySQL 中,但也欢迎其他数据库。

4

4 回答 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 回答