gpt4 book ai didi

sql - PostgreSQL RETURNING 因 REGEXP_REPLACE 而失败

转载 作者:行者123 更新时间:2023-11-29 12:09:27 28 4
gpt4 key购买 nike

我正在运行 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 中运行查询,它确实可以工作并返回一个不错的输出。

最佳答案

尝试重现失败:

t=# create table s1(t text);
CREATE TABLE
t=# insert into s1 values ('+4422848566') returning REGEXP_REPLACE(t, '^(\+?|00)', '');
regexp_replace
----------------
4422848566
(1 row)

INSERT 0 1

如此详细的@pozs 建议原因:

set standard_conforming_strings to off;

导致

WARNING:  nonstandard use of escape in a string literal
LINE 1: ...alues ('+4422848566') returning REGEXP_REPLACE(t, '^(\+?|00)...
^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
ERROR: invalid regular expression: quantifier operand invalid

更新正如 OP 作者所说,standard_conforming_stringson 从 9.1 开始默认使用 psql 并且 offpg- promise

从 vitaly-t 更新

The issue is simply with the JavaScript literal escaping, not with the flag.

他在回答中进一步阐述

关于sql - PostgreSQL RETURNING 因 REGEXP_REPLACE 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389063/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com