2016-07-14 10 views
0

私は、PostgreSQL 9.4とのマッチング正規表現パターンを使用しようとしている:のPostgreSQL 9.4 UPDATE ... REGEX事業者とエラーからの

が前の回答が、私は試合にこの特定の問題

を見つけることができます何を通じて見たことがselect 'apple' ~ '^.*pp.*$'が 't'を返します。

update <table> set column = 'value' where name ~* '^.*pp.*$'も動作します。

は、しかし:

update <table> set column = 'value' from <other_table> where name ~* '^.*pp.*$'はエラーを生成します。

具体例:

update 
    members set 
    pattern = a.pattern 
    from 
    services a 
    where 
    organisation ~* '^.*' || replace(a.pattern, ' ', '.*') || '.*$'; 

ERROR:boolean型でなければなりませんWHEREの引数、テキスト LINE 1を入力していません.. .attern = a。サービスからのパターンa組織...

■更新内のFROMテーブルが正規表現演算子を正しく認識または処理していない場合は、where句を使用します。 あるいは、均等おそらく、私はUPDATEを誤解しています...構文と

感謝をあなたは文字列式の周りに括弧が欠落している

答えて

1

を助けることができるかどうか。これらの演算子(~||)は同じ優先度を持ち、左から評価されます。

 
postgres=# update foo set b = a where a ~ 'ab'; 
UPDATE 1 
postgres=# update foo set b = a where a ~ 'ab' || 'xxxx'; 
ERROR: argument of WHERE must be type boolean, not type text 
LINE 1: update foo set b = a where a ~ 'ab' || 'xxxx'; 
           ^
postgres=# update foo set b = a where a ~ ('ab' || 'xxxx'); 
UPDATE 0 
+0

優れています。どうもありがとう。私は前に括弧を試していましたが、全体の句のどこかでどこを(組織...) –

関連する問題