【问题标题】:Replacing CR characters in mysql替换mysql中的CR字符
【发布时间】:2015-12-17 14:56:24
【问题描述】:

在我的 mysql 表中,我有一个参考字段。用户在那里输入参考,但他们使用回车。我有一个将表导出到 csv 然后导入到另一个 mysql 数据库的脚本。问题在于我的脚本将其导入新数据库,它说新行是 /n (lines terminated by '\n')。现在,当我导入它并且在 ref 字段中有一个输入时,它认为它是一个新行。我搜索了很多选项并尝试在 ref 字段中替换它,但它仍然是可见的。

我尝试过的 mysql 查询确实更新了几行但不是全部:

UPDATE tablename SET `ref` = REPLACE(`ref`, '\n', '') WHERE INSTR(`ref`, '\n') > 0;
UPDATE tablename SET `ref` = REPLACE(`ref`, '\r', '') WHERE INSTR(`ref`, '\r') > 0;

这不会返回任何行,我这样做只是为了检查 ascii 代码,但是如果我在 notepad++ 中导出的 csv 文件很少包含所有字符,我可以清楚地看到问题是 [CR][LF],我附上了这个的打印屏幕。

SELECT * FROM tablename WHERE `ref`LIKE CONCAT('%',CHAR(13 ),'%') 

我必须在我的下载脚本中做什么才能找到并替换它?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    在此处查看同一问题的答案:Removing carriage returns in Mysql DB

    UPDATE xxxxxx set body = replace(body,'\r\n','');
    UPDATE xxxxxx set body = replace(body,'\n','');
    

    如果该答案对您有用,请将其归功于 LiamB。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题,无法像您尝试的那样使用 '%\n%' 或 concat 解决。 与使用双反斜杠相同

      最后我发现使用 4 个反斜杠返回了所有带有换行符的记录 例如:

      Select * from table, where ref like '%\\\\n%'
      

      这是在 MySQL Workbench 中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-07
        • 2011-12-05
        • 2014-07-29
        • 2012-10-31
        • 1970-01-01
        • 2011-08-22
        相关资源
        最近更新 更多