【问题标题】:How to replace & to & in SQL?如何在 SQL 中将 & 替换为 &?
【发布时间】:2015-12-07 08:15:43
【问题描述】:

我的数据库表中有一些错误数据。我只想将所有&&&amp&amp 替换为&

在java中它工作正常。在 SQL 中怎么做?

Java:

    String[] names = new String[] { "Ravi Suthar", 
                                    "Ravi & Suthar", 
                                    "Ravi & Suthar",
                                    "Ravi & Suthar",
                                    "Ravi & Suthar" };

    for (String name : names) {
        System.out.println(name.replaceAll("&[amp;]*", "&"));
    }

SQL:

UPDATE tablename SET columnname=REPLACE(columnname,'&[amp;]*','&');

【问题讨论】:

  • 您使用的是什么版本的 SQL?
  • 仅供参考:这主要发生在有人不信任他的 xml 解析器并手动转义 & 符号时。也许你可以从源头上解决这个问题!
  • 列数据类型是varchar,我使用的是ms sql server 2008。
  • 根据这篇文章,在 MSSQL 中不可能,stackoverflow.com/questions/21378193/…
  • @aksappy,是的。看我的回答。

标签: java sql sql-server regex sql-update


【解决方案1】:
UPDATE tablename SET columnname=REPLACE(REPLACE(columnname,'&','&'), 'amp;', '');

这将首先将"&" 替换为"&",然后将所有"amp;" 替换为""(空字符串)。

【讨论】:

    【解决方案2】:

    尝试执行这个:

    UPDATE Tablename
    SET columnname = REPLACE(columnname, '&', '&')
    WHERE columnname LIKE '%&%'
    

    【讨论】:

    • 它将替换 &到 & 可以,但是 &&到&这是不行的。
    【解决方案3】:

    下面的sql将&&&amp&amp或其序列替换为&

    UPDATE tablename
    SET columnname = REPLACE(REPLACE(columnname, '&', '&'), 'amp;', '');
    

    UPDATE tablename
    SET columnname  = REPLACE(columnname , 'amp;', '')
    

    【讨论】:

    • 正是我所说的。如果它对你有用,你可以接受我的回答
    猜你喜欢
    • 2016-09-04
    • 2019-06-07
    • 2020-12-30
    • 1970-01-01
    • 2016-11-09
    • 2015-08-03
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多