我是sql Server的新手,也是Stack溢出的新手.请原谅我的错误.
是否可以按字母顺序对列中的值进行排序?这是我的桌子
NAME ...... XZYVW EBACD
我的结果应该如下所示
NAME ...... VWXYZ ABCDE
有想法得到这个吗?
解决方法
创建用户定义的标量函数.
CREATE FUNCTION dbo.Alphaorder (@str VARCHAR(50)) returns VARCHAR(50) BEGIN DECLARE @len INT,@cnt INT =1,@str1 VARCHAR(50)='',@output VARCHAR(50)='' SELECT @len = Len(@str) WHILE @cnt <= @len BEGIN SELECT @str1 += Substring(@str,@cnt,1) + ',' SET @cnt+=1 END SELECT @str1 = LEFT(@str1,Len(@str1) - 1) SELECT @output += Sp_data FROM (SELECT Split.a.value('.','VARCHAR(100)') Sp_data FROM (SELECT Cast ('<M>' + Replace(@str1,','</M><M>') + '</M>' AS XML) AS Data) AS A CROSS APPLY Data.nodes ('/M') AS Split(a)) A ORDER BY Sp_data RETURN @output END
结果:
SELECT dbo.Alphaorder ('XZYVW') --VWXYZ
原文地址:https://www.jb51.cc/mssql/83322.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。