查找子字符串并替换为空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”是输出中的这一行还是多行?我们在这里看不懂你的心思。您必须发布一些详细信息,以便我们提供帮助。那么您想用分隔符拆分字符串吗?