加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server – 反转TSQL中单词的次序

发布时间:2021-02-24 23:11:57 所属栏目:编程 来源:网络整理
导读:我想知道怎样(假如也许的话)颠倒从TSQL字符串(varchar)返回的单词的次序. 我知道TSQL REVERSE函数,但也会反转单词中的字母,譬喻: 输入我们想汇报各人,我们都喜好StackOverflow 输出 wolfrevOkcatS evol lla ew uoy llet ot tnaw eW 我想在TSQL中现实实现以下

我想知道怎样(假如也许的话)颠倒从TSQL字符串(varchar)返回的单词的次序.

我知道TSQL REVERSE函数,但也会反转单词中的字母,譬喻:

输入>我们想汇报各人,我们都喜好StackOverflow
输出> wolfrevOkcatS evol lla ew uoy llet ot tnaw eW

我想在TSQL中现实实现以下成果:

输入>我们想汇报各人,我们都喜好StackOverflow
输出> 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

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读