在包含换行符的字段上替换()?

时间:2011-06-06 19:28:46

标签: sql-server-2005

所以我有一个字段,基本上每行存储一个完整的XML文件,包含换行符,我需要从接近三百行中删除一些文本。无论我做什么,replace()函数都找不到有问题的文本,而我通过搜索找到的只是一大堆试图删除换行符的人。我没有看到任何原因,替换()只是不起作用,所以我必须以某种方式将其格式化错误。帮助

编辑:以下是我的广义语义示例:

<script>...</script><dependencies>...</dependencies><bunch of other stuff></bunch of other         stuff><labels><label description="Field2" languagecode="1033" /></labels><events><event           name="onchange" application="false" active="true"><script><![field2.DataValue = (some equation);

</script><dependencies /></event></events><a bunch more stuff></a bunch more stuff>

我需要删除事件标记之间的所有内容。所以我的sql代码是这样的:

replace(fieldname, '<events><event name="onchange" application="false" active="true"><script><![field2.DataValue = (some equation);

</script><dependencies /></event></events>', '')

我已经尝试过了,我已经在一行上尝试了所有这些,并且我尝试使用char(10),其中断行应该是,而且没有。

5 个答案:

答案 0 :(得分:1)

内森的答案很接近。由于这个问题是搜索引起的第一件事,我想为我的问题添加一个解决方案。

select replace(field,CHAR(13)+CHAR(10),' ')

我用空格替换了换行符,没有中断。您可能希望始终使用任何内容替换它,在这种情况下应使用''而不是' '

希望这可以帮助其他人,而且他们不必点击搜索引擎结果中的第二个链接。

答案 1 :(得分:0)

很多人都不记得换行符是两个字符 (Char 10 \ n,Char 13 \ r \ n)

替换两者,你应该很好。

SELECT 
REPLACE(field , CHR(10)+CHR(13), '' )
FROM Blah..

答案 2 :(得分:0)

尝试两个简单的测试。

  1. 尝试替换没有双引号(或单引号)但确实有CRLF的xml字符串。它有用吗?如果是,您需要转义引号。

  2. 尝试替换没有CRLF的xml字符串。它有用吗?大。如果是,则仅为CRLF使用两个嵌套replace(),然后为相关字符串替换第二个outter。

答案 3 :(得分:0)

如果您的列是xml类型的列,则可以使用列上的delete方法删除events个节点。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms190254(v=SQL.90).aspx

答案 4 :(得分:0)

在SQL2012-

上为我工作

更新YourTable SET YourCol = REPLACE(YourCol,CHAR(13)+ CHAR(10),&#39;&#39;)