查找子字符串并用Null SQL替换

时间:2016-03-11 19:26:28

标签: sql sql-server

可用字符串:

String1;#1;#String2;#233;#String3;#7;#string4

我想看看结果如下。 结果:

String1|String2|String3|string4

感谢

1 个答案:

答案 0 :(得分:1)

正如我先前所说,这里最快的路径是使用分离器。然后,您需要将这些结果压缩回一行。您可以使用FOR XML

轻松完成此操作

你可以在这里进行多次分割。 http://sqlperformance.com/2012/07/t-sql-queries/split-strings这些往往是这里最受欢迎的。我个人的选择有点不同。它有一些限制,但也有一些功能(如序数行号),大多数其他分离器不具备。你可以找到我在这里使用的分割器的文章(和代码)。 http://www.sqlservercentral.com/articles/Tally+Table/72993/

以下是根据您的样本数据生成所需输出的代码。

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, '')