【问题标题】:How to add a String after multiple comma in a Row using SQL?如何使用 SQL 在一行中的多个逗号后添加一个字符串?
【发布时间】:2019-04-23 13:19:36
【问题描述】:

请帮我在一行中的每个逗号后添加一个字符串,例如:CA_

数据:CA_BA, FU, OT

结果:CA_BA, CA_FU, CA_OT

我已尝试使用以下代码,但未按预期工作

DECLARE @FullName as NVARCHAR(50)

SET @FullName = 'CA_BA, FU, OT'

ELECT STUFF(@FullName, CHARINDEX(' ', @FullName, 0),0, 'CA_');

【问题讨论】:

  • replace(@FullName, ',', ',CA_')
  • 也许更好的做法是不在列中存储分隔数据?这样做通常会导致比解决的问题更多的问题。
  • 我支持@Larnu。停止存储分隔数据,它违反了 1NF,而且只是痛苦和痛苦。
  • @larnu 和 sean 我同意你的观点,但是这个列数据没有用它只是一个展示。
  • 如果是展示案例,则展示案例好的数据。分隔的数据不是好的数据。在对某样东西进行采样时,您希望它是最好的,当然使用标准化数据是展示您的专业知识的绝妙方式。 :)

标签: sql sql-server string split comma


【解决方案1】:

你可以使用

declare @FullName nvarchar(max)= 'CA_BA, FU, OT'

select REPLACE(@FullName,',',',CA_')

但如果你在, 之后有CA_,那么你可以使用这个:

select REPLACE(REPLACE(@FullName,',',',CA_'),',CA_CA_',',CA_')

【讨论】:

  • 我同意你的代码,但更像是硬编码,列是动态的
  • 你可以传递CA_作为参数
  • @masoud 。 . .这回答了您提出的问题。如果您还有其他问题,我建议您将其作为问题提出。
  • 我刚刚回答了,但你是对的@GordonLinoff,你投票赞成我的回答吗?
猜你喜欢
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
相关资源
最近更新 更多