【发布时间】:2018-08-22 11:07:56
【问题描述】:
我已准备好this demo,我想在 SQL Server 中使用 string_split 或其他函数,可能在 case 语句中实现如下输出:
Writer
Sabao Fulano, Sapato Feio, Jose Perreira
Toze Jose
Feijao Mauricio
编辑
这个问题与 cmets 中建议的问题之间的区别在于,这里不仅有要拆分的逗号,而且每个名称都以这种方式附带一个“XX”:
“萨宝富拉诺,XX Some_Random_Text”变成“萨宝富拉诺”
“Sapato Feio, XX, Jose Perreira, XX”改为“Sapato Feio, Jose Perreira”
基本上,如果XX旁边没有逗号,那么只留下第一个实例,说“Sabao Fulano”,或者如果有XX +“,” 然后删除它们中的两个(上面的第二种情况)。这个想法是只留下用逗号分隔的名称。
【问题讨论】:
-
我不听你的问题。如果您的输出是 CSV 数据,那么为什么会涉及
STRING_SPLIT?顺便说一句,将 CSV 数据存储在 SQL 表中通常是个坏主意。如果你发现自己经常使用STRING_SPLIT,这可能意味着糟糕的表格设计。 -
T-SQL split string的可能重复
-
STRING_SPLIT是一个表函数,而不是一个标量函数。您不能在CASE表达式(不是语句)中使用它。我真的不明白你在这里的目标是什么。 -
我们的目标是只有名字而不是 XX。所以 XX 应该被过滤掉。
-
@Larnu 在 CASE 语句中使用 STRING_SPLIT 或表函数没有限制。我不确定这句话“
You can't use it within a CASE expression”是什么意思。澄清一下,这里是简单的代码:select CASE WHEN (SELECT COUNT(*) FROM STRING_SPLIT('a,b',',') t) > 1 then 1 ELSE 0 END。我很确定这不是你的意思;-)
标签: sql-server replace split