如何反转列中的单词

时间:2015-06-05 17:01:42

标签: sql-server sql-server-2008

我的表格包含以下数据

COLA
-------------------------
今天是星期日 你好,你好吗? 你好,我是bharadwaj
嗨,我很好 帮帮我

我需要输出如下

COLA
-------------------------
星期天是今天 你是多么喜欢 Bharadwaj我是你好的 很好,我喜欢 我的帮助

1 个答案:

答案 0 :(得分:0)

如果你有一个字符串拆分器,这不是太糟糕。我喜欢this one,特别是为了这个目的。获取您发布的数据需要另一列主键。然后你可以完全基于这个设置,不需要循环,就像在复制中提出的答案一样。

这看起来很像家庭作业,但在星期五这也是一个有趣的挑战,所以我决定把东西放在一起。

declare @Something table
(
    SomeValue varchar(50)
    , SomeKey int identity
)

insert @Something
select 'Today is sunday' union all
select 'Hi how are you' union all
select 'Hello i am bharadwaj' union all
select 'Hi i am fine' union all
select 'Help me out';

with ParsedWords as
(
    select SomeKey
        , Item
        , x.ItemNumber
    from @Something 
    cross apply dbo.DelimitedSplit8K(SomeValue, ' ') x
)
, ReversedWords as
(
    select SomeKey
        , LOWER(STUFF((select ' ' + p2.Item
                from ParsedWords p2 
                where p2.SomeKey = p.SomeKey
                order by p2.ItemNumber desc
                for XML PATH('')), 1, 1, '')) as Reversed
    from ParsedWords p
    group by p.SomeKey
)

select UPPER(LEFT(Reversed, 1)) + LOWER(SUBSTRING(Reversed, 2, len(Reversed)))
from ReversedWords rw
order by rw.SomeKey