私はPostgreSQL9.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_strings
されるon
と、デフォルトの動作で9.1からなってpsql
とされてoff
の作業しますpg-prommise
バイタリティからの更新-t
問題は、フラグではなく、JavaScriptリテラルのエスケープにあります。
彼は彼の答えでさらに詳しく述べています
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加