如何从SQL Server中的字符串替换分隔符

时间:2015-10-21 00:06:45

标签: sql-server-2008

我有以下数据

abc
pqr  
xyz,
jkl mno

这是由空格,换行符,逗号,制表符等分隔符分隔的一个字符串。 单词之后或之前可能有两个或多个连续的空格或制表符或任何分隔符。

我希望能够做到以下

  1. 从单词中删除所有前导和尾随分隔符
  2. 使用“或”
  3. 附加单个字词

    我正在尝试实现此目的,以构建由OR子句分隔的T-SQL查询。

    由于

1 个答案:

答案 0 :(得分:1)

我认为你可以使用SQL来实现你所需要的(尽管我认为使用编程语言更好),这是我的方法。

请注意,我将只处理逗号,换行符和多个空格,但您可以使用相同的技巧轻松删除其他不需要的字符

所以我们假设我们的表名为ExampleData,其中一列名为DataBefore,另一列名为DataAfter

DataBefore:具有您要清理的行值 DataAfter:将托管已清理的文字

首先我们需要修剪前面的&来自文本的领先空间

Update ExampleData set DataAfter = LTRIM(RTRIM(DataBefore))

其次,我们应该清除所有的逗号,并用空格替换它们(如果我们最终会得到很多空格并不重要)

Update ExampleData set DataAfter = replace(replace(DataAfter,',',' '),char(13),' ')

这是您可以继续使用相同技术删除任何其他字符的部分,并将其替换为空格

到目前为止,我们有一个前后没有空格的文本,每个逗号,换行符, TAB,破折号等字符都替换为空格,让我们继续我们的清理程序。

我们现在可以安全地继续用一个替换单词之间的空格,这是通过使用以下SQL语句来实现的:

Update ExampleData set DataAfter = replace(replace(replace(DataAfter,' ','<>'),'><',''),'<>',' ')

根据您的需要,我们需要在每个单词之间放置一个OR,这可以通过以下SQL语句实现:

Update ExampleData set DataAfter = replace(replace(replace(DataAfter,' ','<>'),'><',''),'<>',' OR ')

我们现在已经完成,作为可能会或可能不会进行更改的最后一步,我们需要删除整个文本末尾的任何空格,以防万一不需要的字符位于文本的末尾,并且结果被空格取代,这可以通过以下语句来实现:

Update ExampleData set DataAfter = RTRIM(DataAfter)

我们现在完成了。 :)

作为测试,我在DataBefore列中生成了以下文字: this is just a, test, to be sure, that everything is, working, great .

并在运行上一个命令后,在DataAfter列中结束了此值: this OR is OR just OR a OR test OR to OR be OR sure OR that OR everything OR is OR working OR great OR .

希望这是你想要的,如果你需要任何额外帮助,请告诉我们。)