SQL对字符串和数字进行排序
如果我有一个SQL对字符串和数字进行排序,sql,Sql,如果我有一个1,2,3,4,5,K的列表,并且我希望它像K,1,2,3,4,5那样排序,那么我如何在SQL中做到这一点?这些值是SQL表中唯一的值。这是MySQL中的,但也欢迎使用其他数据库。在Oracle中,您可以执行以下操作: ORDER BY CASE WHEN column='K' THEN 0 ELSE TO_NUMBER(column) END 其他系统可能也有类似的结构。如果需要对SELECT的结果进行排序,则可以按照ORDER BY语句声明自定义排序规则 下面是一个例子: 这样
1,2,3,4,5,K
的列表,并且我希望它像K,1,2,3,4,5
那样排序,那么我如何在SQL中做到这一点?这些值是SQL表中唯一的值。这是MySQL中的,但也欢迎使用其他数据库。在Oracle中,您可以执行以下操作:
ORDER BY CASE WHEN column='K' THEN 0 ELSE TO_NUMBER(column) END
其他系统可能也有类似的结构。如果需要对SELECT的结果进行排序,则可以按照ORDER BY语句声明自定义排序规则 下面是一个例子: 这样做的目的是为每个项目分配您自己的优先级
请记住,它可能取决于实际的SQL server。这里有一个在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;
mysql中没有整数dection函数,所以您必须执行类似的操作。假设您的列是varchar之类的,您可以使用如下简单的方法
ORDER BY CASE WHEN field REGEXP '^-?[0-9]+$' THEN field ELSE '0'+field END
不清楚这些是表/结果集中的行,还是要更改值顺序的逗号分隔值的单个字符串。排序规则是什么?字母在数字之前?我不能将其转换为带符号的整数吗?当然可以,但当它失败时,您将有一个空值。这是一步完成的