【问题标题】:How to reverse words in a column [duplicate]如何反转列中的单词[重复]
【发布时间】:2015-06-08 01:53:50
【问题描述】:

我的表包含如下数据

可乐
-------------------------
今天是星期天
嗨,你好吗
你好我是bharadwaj
嗨,我很好
帮帮我

我需要如下输出

可乐
-------------------------
今天是星期天
你是多么嗨
Bharadwaj 我你好
我很好,我嗨
帮帮我

【问题讨论】:

  • 你试过什么?
  • 您的示例似乎是反转字符串中以空格分隔的单词,而不是表中的行。以及大小写变化。
  • 你需要自己做功课

标签: sql-server sql-server-2008


【解决方案1】:

如果你有一个字符串拆分器,这还不错。我喜欢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

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多