替换功能不起作用

时间:2017-08-30 14:51:29

标签: mysql sql replace

我已经导入了mySQLi数据库并且一切正常,但我的列中到处都有'\r\n'(其中有换行符)。

我测试了我在google上找到的所有东西,不幸的是我没有成功。 我想做的替换很简单:

UPDATE llx_societe_alarme
SET historique = REPLACE(historique, '\r\n', CHAR(13)+CHAR(10))

它有效但影响0行 你能帮帮我吗?谢谢!

3 个答案:

答案 0 :(得分:1)

REPLACE(txt, '\\r\\n', CHAR(13)+CHAR(10))似乎消除了\ r或\ n&n;并正确替换了char(13)+ char(10)。

为什么呢? \r\n是一个特殊的转义字符序列,因此\需要转义。

文档来源:

  1. DEMO:http://sqlfiddle.com/#!9/e3771a/1/0(只选择不更新)
  2. DEMO2:http://rextester.com/RYMIZ68964(正在运行更新)
  3. 使用rextester进行更新:

    更新有效。 (我不得不从SQL小提琴切换到它对我保持计时)。这对我来说意味着:

    1. 某处的服务器设置
    2. 您有数据我没有在00中测试结果。
    3. 请使用导致00的数据更新上面的rextester.com示例。可能还有其他非显示字符或其他值导致此问题。我在MCVE之后,因为我无法重现这个问题。

答案 1 :(得分:0)

感谢您的回答,要明确我已经' \ r \ n'在很多领域,我也有' \ n \ n&n;或者' \ r'或者' \ n'在移动我的数据库之前我到处都有回车。我只想删除它并放回车。

示例,我有:

  • 第1行
  • 第2行
  • 第3行

现在我有:

  • 第1行\ r \ n-第2行\ r \ n-第3行

或者在某些情况下:

  • 第1行 \ r \ n-第2行 \ r \ n-第3行

和其他只是' \ r'或者' \ n'或' \ n \ n'

它在我的客户和我的网站上都可见。

谢谢!

答案 2 :(得分:0)

在MySQL 5.6中,对我有用的是

UPDATE table
SET txt = REPLACE(txt, '\\r\\n', "\r\n")

这给了我真实的回车。双引号字符串中的“\ r \ n”序列似乎给出了真正的回车符,'\ r \ n'正确地找到字符串版本。

你也可以做一个

SELECT txt, REPLACE(txt, '\\r\\n', "\r\n") 
FROM table

在运行实际更新之前对结果进行问题排查。