我有一个SQL数据库,我打电话通过一个PHP文件。该列可以包含数字和单词。例如,它可以countain:SQL - 命令混合的数字和字
1
4
clowns
12
46
当然,ORDER BY回报:
1
12
4
46
clowns
,但我想它进行排序如何将整数与分类编号:
1
4
12
46
clowns
是有可能做到这一点?
我有一个SQL数据库,我打电话通过一个PHP文件。该列可以包含数字和单词。例如,它可以countain:SQL - 命令混合的数字和字
1
4
clowns
12
46
当然,ORDER BY回报:
1
12
4
46
clowns
,但我想它进行排序如何将整数与分类编号:
1
4
12
46
clowns
是有可能做到这一点?
添加一些新的列来解决这个问题,首先通过是否它是一个数字,然后由数字值,最后按字的值按字母顺序。
在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
...
看到一个自定义函数http://stackoverflow.com/questions/153633/natural-sort-in-mysql – bruchowski
取决于使用的dbms。一些dbms产品与数字排序有整理。 – jarlh