jwl*_*jwl 0 sql-server sorting sql-server-2005
我正在使用来自外部源的表,并且无法"清理".有一个列nvarchar(20)并且在95%的时间内包含整数,但偶尔包含alpha.我想用类似的东西
select * from sch.tbl order by cast(shouldBeANumber as integer)
Run Code Online (Sandbox Code Playgroud)
但这会在奇数"3A"或"D"或"SUPERCEDED"值上引发错误.
有没有办法说"如果可以的话,将其排序为数字,否则只按字符串排序"?我知道那句话中有些邋,,但这基本上就是我想要的.
让我们说例如价值观
7,1,5A,SUPERCEDED,2,5,SECTION
Run Code Online (Sandbox Code Playgroud)
如果按以下任何一种方式对它们进行排序,我会很高兴(因为我真的只需要使用数字方法)
1,2,5,7,5A,SECTION,SUPERCEDED
1,2,5,5A,7,SECTION,SUPERCEDED
SECTION,SUPERCEDED,1,2,5,5A,7
5A,SECTION,SUPERCEDED,1,2,5,7
Run Code Online (Sandbox Code Playgroud)
我真的只需要使用数字的
这只会给你数字的,排序正确:
SELECT
*
FROM YourTable
WHERE ISNUMERIC(YourColumn)=1
ORDER BY YourColumn
Run Code Online (Sandbox Code Playgroud)