我有一个表,其中一列存储为字符串,但实际上是一个像这样的数字:
17 - Doe
2 - Mike
3 - James
我需要对它们进行排序并创建如下输出:
2 - Mike
3 - James
17 - Doe
怎么写SQL?提前致谢!
最佳答案
尝试这个:
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))
您不应以这种方式存储数据,请向该表中添加一个新的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)
您可以将索引添加到新的int列中(如果需要加入或选择)。现在,您可以对其执行常规的ORDER BY。