可用字符串:
String1;#1;#String2;#233;#String3;#7;#string4
我想看看结果如下。 结果:
String1|String2|String3|string4
感谢
答案 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, '')