sql-server – 反转TSQL中单词的顺序
发布时间:2021-02-25 09:06:28 所属栏目:MsSql教程 来源:网络整理
导读:我想知道如何(如果可能的话)颠倒从TSQL字符串(varchar)返回的单词的顺序. 我知道TSQL REVERSE函数,但也会反转单词中的字母,例如: 输入我们想告诉大家,我们都喜欢StackOverflow 输出 wolfrevOkcatS evol lla ew uoy llet ot tnaw eW 我想在TSQL中实际实现以下
我想知道如何(如果可能的话)颠倒从TSQL字符串(varchar)返回的单词的顺序. 我知道TSQL REVERSE函数,但也会反转单词中的字母,例如: 输入>我们想告诉大家,我们都喜欢StackOverflow 我想在TSQL中实际实现以下功能: 输入>我们想告诉大家,我们都喜欢StackOverflow 我在任何地方找到的唯一一个稍微类似的问题是this one,但是这包括拆分逗号分隔的字符串,我不需要这样做. 我确信有一种方法可以实现上述目标,即使它是自定义函数或SQL-CLR函数,任何帮助都将非常感激. 编辑: 我设法使用以下方法拆分我的字符串: -- Create a space delimited string for testing declare @str varchar(max) select @str = 'We want to tell you we all love StackOverflow' -- XML tag the string by replacing spaces with </x><x> tags declare @xml xml select @xml = cast('<x><![CDATA['+ replace(@str,' ',']]></x><x><![CDATA[') + ']]></x>' as xml) -- Finally select values from nodes <x> and trim at the same time select ltrim(rtrim(mynode.value('.[1]','nvarchar(50)'))) as Code from (select @xml doc) xx cross apply doc.nodes('/x') (mynode) 现在的问题是尝试将它们全部重新组合成一个以向后(DESC)顺序排列的字符串. 解决方法您可以在SQL中创建一个小函数来反转字符串,如下所示:DECLARE @source VARCHAR(MAX) DECLARE @dest VARCHAR(MAX) DECLARE @lenght INT SET @source = 'We want to tell you we all love StackOverflow' SET @dest = '' WHILE LEN(@source) > 0 BEGIN IF CHARINDEX(' ',@source) > 0 BEGIN SET @dest = SUBSTRING(@source,CHARINDEX(' ',@source)) + ' ' + @dest SET @source = LTRIM(RTRIM(SUBSTRING(@source,@source)+1,LEN(@source)))) END ELSE BEGIN SET @dest = @source + ' ' + @dest SET @source = '' END END SELECT @dest (编辑:应用网_常德站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- XHTML入门学习教程:表单标签
- sql-server-2008-r2 – I / O请求超过15秒
- sql – 访问替代EXCEPT子句
- sql – 当结果集很大时,RODBC会丢失datetime的时间值
- teradata sql将多次出现转移到其他列中
- sql-server – 如何在SQl Server 2008中选择distinct,但仅限
- sql-server – 当.sql脚本失败时,如何使sqlcmd返回0以外的E
- 在SQL查询中将别名命名为汇总?
- SQLServer Execpt和not in 性能差异
- schema – Redgate SQL Compare与Visual Studio 2010 Premi
站长推荐
热点阅读