如何在MS SQL Server中对单元格内的字母数字值进行排序

h7appiyu  于 2023-01-12  发布在  SQL Server
关注(0)|答案(1)|浏览(126)

我想在MS SQL服务器的单元格中排序字母数字值。
例如-
列中有一个值-CBA 321,而我想要的输出是ABC123。
如果有人知道我如何在一个细胞内排序,会有帮助的。谢谢!
Order By在这里不起作用。我认为UserDefinedFunction或标量函数是一种解决方案,但我是一个初学者,所以对它了解不多。

dced5bon

dced5bon1#

对于Azure SQL数据库或SQL Server 2022,您可以使用string_agg而不是generate_series来执行此操作,例如

declare @v varchar(200) = 'CBA321'

select string_agg( substring(@v,s.value,1), '') within group (order by  substring(@v,s.value,1))
from  generate_series(1,len(@v)) s

其输出
123ABC
因为在我的排序规则中,数字排在字母字符之前。如果您希望字母字符排在前面,类似于

declare @v varchar(200) = 'CBA321'

select string_agg( substring(@v,s.value,1), '') within group (order by  case when substring(@v,s.value,1) < 'A' then 1 else 0 end, substring(@v,s.value,1) )
from  generate_series(1,len(@v)) s

相关问题