Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中对字符串进行数字排序_Sql Server_Tsql_Sorting_Sql Order By_Natural Sort - Fatal编程技术网

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将把列的其余部分强制转换为整数(也可以通过强制转换或转换完成)