【发布时间】:2017-11-07 09:57:09
【问题描述】:
我正在运行 PostgreSQL 9.4,并且正在向我的数据库中插入大量记录。我在插入后使用 RETURNING 子句以供进一步使用。
当我简单地运行时:
... RETURNING my_car, brand, color, contact
一切正常,但如果我尝试使用 REGEXP_REPLACE 它会失败:
... RETURNing my_car, brand, color, REGEXP_REPLACE(contact, '^(\+?|00)', '') AS contact
它失败了:
ERROR: invalid regular expression: quantifier operand invalid
如果我只是直接在 PostgreSQL 中运行查询,它确实可以工作并返回一个不错的输出。
【问题讨论】:
-
请确保您不会意外关闭
standard_conforming_strings(即select current_setting('standard_conforming_strings'))。 -- 9.1 及以后默认启用。 如果是off,那么语法就是'^(\\+?|00)'。此外,还有一种特殊的语法,无论此选项如何都有效:E'^(\\+?|00)'。但留下它on通常不那么令人惊讶。 -
已开启。手动运行 regexp_replace 查询也可以,但是将其添加到 RETURNING 会导致插入失败。
-
您能否填写失败的
contact的值?... -
@VaoTsun 可以在每个会话中设置
-
@VaoTsun 它在所有情况下都失败,例如。 '+4422848566'。但是手动运行查询是可行的。同样,只有在 RETURNING 子句中才会失败。
标签: sql node.js postgresql pg-promise regexp-replace