SQL SERVER 将字符串按数字排序
方法一:使用 CAST 或 CONVERT
我们可以使用 CAST 或 CONVERT 函数将字符串转换为数字,然后按照数字进行排序。示例如下:
SELECT *
FROM YourTable
ORDER BY CAST(YourColumn AS INT)
方法二:使用 TRY_CAST 或 TRY_CONVERT
如果我们不确定字符串中的所有值都可以成功转换为数字,我们可以使用 TRY_CAST 或 TRY_CONVERT 函数。这两个函数会尝试将值转换为指定的数据类型,如果无法转换则返回 NULL。示例如下:
SELECT *
FROM YourTable
ORDER BY TRY_CAST(YourColumn AS INT)
方法三:使用 PATINDEX 和 SUBSTRING
如果我们的字符串中包含其他非数字字符,我们可以使用 PATINDEX 函数找到数字的起始位置,并使用 SUBSTRING 函数将其提取出来,然后按照数字进行排序。示例如下:
SELECT *
FROM YourTable
ORDER BY CAST(SUBSTRING(YourColumn, PATINDEX('%[0-9]%', YourColumn), LEN(YourColumn)) AS INT)
方法四:使用正则表达式
在 SQL Server 2016 及以上版本中,我们可以使用内置的正则表达式功能来提取字符串中的数字,并按照数字进行排序。示例如下:
SELECT *
FROM YourTable
ORDER BY CAST('' AS XML).value('xs:double((.*[0-9])+)[1]', 'FLOAT')
本文来自博客园,作者:苏沐~,转载请注明原文链接:https://www.cnblogs.com/sumu80/p/18150079