所以我有一个字段,基本上每行存储一个完整的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),其中断行应该是,而且没有。
答案 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)
尝试两个简单的测试。
尝试替换没有双引号(或单引号)但确实有CRLF的xml字符串。它有用吗?如果是,您需要转义引号。
尝试替换没有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;)