我有一个SQL数据库,我通过php文件调用。该列可以包含数字和单词。例如,它可以计算:
1
4
clowns
12
46
当然,ORDER BY会返回:
1
12
4
46
clowns
但我希望对它如何用数字排序整数进行排序:
1
4
12
46
clowns
是否可以这样做?
答案 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
...