如何在SQL Server中按数字排序?

2 sql sql-server

我有一个表存储为字符串的列,但它实际上是这样的数字:

17 - Doe
2 - Mike
3 - James
Run Code Online (Sandbox Code Playgroud)

我需要对它们进行排序并创建如下输出:

2 - Mike
3 - James
17 - Doe
Run Code Online (Sandbox Code Playgroud)

如何编写SQL?提前致谢!

KM.*_*KM. 8

试试这个:

DECLARE @Yourtable table (data varchar(50))
insert into @Yourtable values ('17 - Doe')
insert into @Yourtable values ('2 - Mike')
insert into @Yourtable values ('3 - James')

SELECT * FROM @Yourtable order by CONVERT(int,left(data, charindex('-', data)-1))
Run Code Online (Sandbox Code Playgroud)

您不应该以这种方式存储数据,向此表添加新的int列并运行此列来修复表:

DECLARE @Yourtable table (data varchar(50), newINT int)
insert into @Yourtable values ('17 - Doe',null)
insert into @Yourtable values ('2 - Mike',null)
insert into @Yourtable values ('3 - James',null)

UPDATE @Yourtable
    SET newINT=CONVERT(int,left(data, charindex('-', data)-1))
        ,data=RIGHT(data, LEN(data)-charindex('-', data)-1)
Run Code Online (Sandbox Code Playgroud)

如果需要加入或选择索引,可以在新的int列中添加索引.现在你可以对它进行常规的ORDER BY.

  • 为"您不应该以这种方式存储数据"+1 (2认同)