查找子字符串并替换为空SQL
可用字符串:查找子字符串并替换为空SQL,sql,sql-server,Sql,Sql Server,可用字符串: String1#1;#第2条#233;#第3条#7;#字符串4 我希望结果如下所示。 结果: String1|String2|String3|string4 谢谢正如我前面所说,这里最快的方法是使用拆分器。然后需要将这些结果压缩回一行。您可以使用FOR XML轻松地实现这一点 您可以在这里使用多个拆分器。这些往往是这里最受欢迎的。我个人的选择有点不同。它有一些限制,但也有一些其他大多数拆分器没有的特性(如序号)。您可以找到我在这里使用的拆分器的文章(和代码) 下面是根据示例数据生
String1#1;#第2条#233;#第3条#7;#字符串4
我希望结果如下所示。
结果:
String1|String2|String3|string4
谢谢正如我前面所说,这里最快的方法是使用拆分器。然后需要将这些结果压缩回一行。您可以使用FOR XML轻松地实现这一点 您可以在这里使用多个拆分器。这些往往是这里最受欢迎的。我个人的选择有点不同。它有一些限制,但也有一些其他大多数拆分器没有的特性(如序号)。您可以找到我在这里使用的拆分器的文章(和代码) 下面是根据示例数据生成所需输出的代码
declare @StringToSplit varchar(500) = 'String1;#1;#String2;#233;#String3;#7;#string4'
SELECT STUFF((
SELECT '|' + REPLACE(Item, '#', '')
FROM dbo.DelimitedSplit8K(@StringToSplit, ';')
WHERE ISNUMERIC(replace(Item, '#', '')) = 0
FOR XML PATH('')), 1, 1, '')
处理这个问题最简单的方法可能是使用字符串拆分器。然后使用where谓词来防止不需要的返回值。问题是什么?字符串在哪里可用?它是某个查询的结果,还是存储在一个表中,一列中,像这样……意味着我输入了“String1;#1;#String2;#233;#String3;#7;#string4”,我正在寻找输出“String1 | String2 | String3 | string4”是输出中的这一行还是多行?我们在这里看不懂你的心思。您必须发布一些详细信息,以便我们提供帮助。那么您想用分隔符拆分字符串吗?