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')
posted @ 2024-04-22 10:03  苏沐~  阅读(965)  评论(0编辑  收藏  举报