我正在将数据库从MySql迁移到PostgreSql
我还有最后一件事:在表steps
中有一列overlay_custom_css
。
customer_overlay_css中的数据示例:
left:957px;\r\ntop:594px;\r\nwidth:68px;\r\nheight:30px;
我需要从此数据中删除\r\n
。据我所知,\是一个特殊的字符,所以必须由另一个\
源:https://www.postgresql.org/docs/8.3/static/functions-matching.html
这是我到目前为止所拥有的:
UPDATE
steps
SET
overlay_custom_css = REPLACE(overlay_custom_css,'\\r\\n','')
WHERE
overlay_custom_css LIKE '%\\r\\n%';
在我运行之后它说它影响了200多行,但是查看我的数据并没有区别。
有谁能告诉我哪里出错了?
答案 0 :(得分:1)
要使用C-style escapes,您需要使用E''
PostgreSQL还接受“转义”字符串常量,它是SQL标准的扩展。通过在开始单引号之前写入字母E(大写或小写)来指定转义字符串常量,例如E'foo'。 (当在行之间继续转义字符串常量时,仅在第一个开始引号之前写入E.)在转义字符串中,反斜杠字符()开始一个类似C的反斜杠转义序列,其中反斜杠和后续字符的组合(s )表示一个特殊的字节值,如表4-1所示。
所以它看起来像这样,
SELECT x, replace(x, E'\r\n', '')
FROM ( VALUES
(E'foo\r\nbar')
) AS t(x);
答案 1 :(得分:1)
您可以使用regexp_replace
。
select regexp_replace(overlay_custom_css,'\\r\\n','','g')
答案 2 :(得分:0)
如果使用Laravel,请使用四转义符:
// querying for 'Foo\Bar'...
Model::where('foo', 'like', 'Foo\\\\Bar')->get()