反转字符串顺序

Posted

技术标签:

【中文标题】反转字符串顺序【英文标题】:Reverse Order of String 【发布时间】:2020-04-09 11:34:16 【问题描述】:

我需要在 SQL Server 中反转一列中字符串的顺序。

例子:

"Smith,John" expected to "John Smith".
"Depp,Johnny" expected to "Johnny Depp".

知道如何用逗号分隔它,然后用空格分隔它吗?

谢谢!

【问题讨论】:

您的 SQL Server 版本是多少? 我使用的是 SQL Server 2014 请务必检查您的数据,例如,如果任何名称字段没有共同点,则下面的代码将失败。运行查询以识别任何不包含逗号的名称列,然后手动修复这些列。 【参考方案1】:

你可以这样做

SELECT S, CONCAT(
                 REPLACE(S, LEFT(S, CHARINDEX(',', S)), ''), ' ', 
                 LEFT(S, CHARINDEX(',', S)-1)
                )
FROM (VALUES('Smith,John'), ('Depp,Johnny')) T(S)

【讨论】:

不同而美好。【参考方案2】:

我推荐“重构”:

select concat(stuff(str, 1, charindex(',', str), ''), ' ',
              left(str, chardindex(',', str) - 1)
             ) as reversed_names

【讨论】:

【参考方案3】:

一种分解和重组的方法:

select concat(substring(col, charindex(',', col)+1, len(col)), ' ',
              left(col, charindex(',', col)-1)
             )

【讨论】:

以上是关于反转字符串顺序的主要内容,如果未能解决你的问题,请参考以下文章

反转字符数组中单词的顺序

C语言实现来实现字符串反转,只有单词顺序反转,组成单词的字母不反转

使用JavaScript反转字符串的顺序

python 反转字符串的顺序

反转单词顺序 VS 左旋转字符串

ArrayList中每个条目中字符的反转顺序[重复]