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 @   苏沐~  阅读(1182)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示