反转字符串顺序
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)
)
【讨论】:
以上是关于反转字符串顺序的主要内容,如果未能解决你的问题,请参考以下文章