SQL - 订购数字和单词的混合

时间:2015-05-09 02:42:58

标签: php sql

我有一个SQL数据库,我通过php文件调用。该列可以包含数字和单词。例如,它可以计算:

1
4
clowns
12
46

当然,ORDER BY会返回:

1
12
4
46
clowns

但我希望对它如何用数字排序整数进行排序:

1
4
12
46
clowns

是否可以这样做?

1 个答案:

答案 0 :(得分:3)

添加一些新列来解决这个问题,首先按顺序是否为数字,然后按数字值,最后按字母顺序按字值。

在MSSQL中,您可以访问isnumeric函数 在ORACLE中,您可以使用THIS创建自定义函数 在MYSQL中,您可以使用THIS

创建自定义函数
select your_column from(
select *, 
isnumeric(your_column) as ISNUMBER,
CASE WHEN ISNUMERIC(your_column) = 1 THEN CAST(your_column AS INT) ELSE null END as NUMBERVALUE,
case when isnumeric(your_column) = 1 then null else your_column end as TEXTVALUE )
order by isnumber desc, numbervalue asc, textvalue asc
...