【问题标题】:Replace() on a field with line breaks in it?Replace() 在带有换行符的字段上?
【发布时间】:2011-09-09 13:30:26
【问题描述】:

所以我有一个字段,它基本上每行存储一个完整的 XML 文件,包括换行符,我需要从近 300 行中删除一些文本。无论我做什么,replace() 函数都找不到有问题的文本,而我通过搜索所能找到的只是一堆试图自己删除换行符的人。我看不出 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),但没有。

【问题讨论】:

  • 您实际上必须向我们展示一个数据示例以及您传递的要替换的内容。
  • 当然。我现在将其编辑到我的帖子中。
  • 可能与以下内容重复:Replace a newline in TSQL
  • @Luka 不,我不是要自己删除换行符,而是要从包含换行符的字段中删除文本。

标签: sql-server-2005


【解决方案1】:

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

把两者都换掉,你应该会很好。

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

【讨论】:

  • 换一种方式试试,CHR(13)+CHR(10)?这肯定应该通过 tsql 删除换行符
【解决方案2】:

尝试两个简单的测试。

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

  2. 尝试替换没有 CRLF 的 xml 字符串。它有效吗?伟大的。如果是,则使用两个嵌套的replace() 一个仅用于 CRLF,然后使用第二个外部替换有问题的字符串。

【讨论】:

    【解决方案3】:

    如果您的列是xml 类型的列,您可以在列上使用delete 方法来删​​除events 节点。请参阅http://msdn.microsoft.com/en-us/library/ms190254(v=SQL.90).aspx 了解更多信息。

    【讨论】:

      【解决方案4】:

      内森的回答很接近。由于这个问题是搜索中出现的第一件事,所以我想为我的问题添加一个解决方案。

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

      我用空格替换了换行符,以防没有换行符。您可能希望始终将其替换为空,在这种情况下应使用 '' 而不是 ' '

      希望这对其他人有所帮助,他们不必单击搜索引擎结果中的第二个链接。

      【讨论】:

        【解决方案5】:

        在 SQL2012 上为我工作-

        更新你的表 SET YourCol = REPLACE(YourCol, CHAR(13) + CHAR(10), '')

        【讨论】:

        • 这是真正的答案,在一堆什么都没有替换的 SELECT 中。
        猜你喜欢
        • 2018-04-26
        • 1970-01-01
        • 1970-01-01
        • 2019-02-06
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        相关资源
        最近更新 更多