Sql server 在SQL Server中对字符串进行数字排序
我在一个表中有一列填充了字符串Sql server 在SQL Server中对字符串进行数字排序,sql-server,tsql,sorting,sql-order-by,natural-sort,Sql Server,Tsql,Sorting,Sql Order By,Natural Sort,我在一个表中有一列填充了字符串 level 1, level 2, level 3 ... level 12. 我希望按此列排序,但不是按字母顺序,因为此列是按字母顺序排序的 1 10 11 12 2 3 4 5 6 7 8 9 尽管此列是字符串类型,但如何将其按正确的数字顺序排序 我想我只需要提取字符串的数字部分,并将其转换为int,但我不知道如何在SQL Server中实现这一点 谢谢试试这个: Select * From YourTable Order by CAST( SUBSTRI
level 1, level 2, level 3 ... level 12.
我希望按此列排序,但不是按字母顺序,因为此列是按字母顺序排序的
1 10 11 12 2 3 4 5 6 7 8 9
尽管此列是字符串类型,但如何将其按正确的数字顺序排序
我想我只需要提取字符串的数字部分,并将其转换为int
,但我不知道如何在SQL Server中实现这一点
谢谢试试这个:
Select *
From YourTable
Order by CAST( SUBSTRING(YourColumn, 6,LEN(YourColumn)) AS Int)
SELECT *
FROM TableName
ORDER BY CAST(REPLACE(ColumnName, 'level', '') AS INT)
试试这个:
Select *
From YourTable
Order by CAST( SUBSTRING(YourColumn, 6,LEN(YourColumn)) AS Int)
SELECT *
FROM TableName
ORDER BY CAST(REPLACE(ColumnName, 'level', '') AS INT)
试着这样做:
SELECT col
FROM
(values('level 1'),('level 2'),('level 3'),
('level 5'),('level 8'),('level 10'),('level 12'))
x(col)
ORDER BY stuff(col, 1,6, '') + 0
填充将删除前6个字符,+0将把列的其余部分强制转换为整数(也可以通过强制转换或转换完成)