在我的mysql表中,我有一个Reference字段。用户在那里键入引用,但他们使用enter。我有一个脚本将表导出到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代码,但是如果我在记事本++中导出的csv文件少了所有字符我可以清楚地看到问题是[CR] [LF],我附上了这个印刷品。
SELECT * FROM tablename WHERE `ref`LIKE CONCAT('%',CHAR(13 ),'%')
我必须在下载脚本中查找并替换此内容?
答案 0 :(得分:1)
请在此处查看相同问题的答案:Removing carriage returns in Mysql DB
UPDATE xxxxxx set body = replace(body,'\r\n','');
UPDATE xxxxxx set body = replace(body,'\n','');
如果LiamB适合您,请给予LiamB这个答案。
答案 1 :(得分:0)
我遇到了类似的问题,无法像您尝试的那样使用'%\ n%'或concat来解决。 与使用双反斜杠相同
最后,我发现使用4个反斜杠将所有记录与换行符一起返回 例如:
Select * from table, where ref like '%\\\\n%'
这是在MySQL Workbench中