web-dev-qa-db-ja.com

PostgresのWHEREで正規表現を使用する

現在、次のクエリがあります。

select regexp_matches(name, 'foo') from table;

正規表現が次のような場所にあるようにこれを書き換えるにはどうすればよいですか(動作していません):

select * from table where regexp_matches(name, 'foo');

現在のエラーメッセージは次のとおりです。エラー:WHEREの引数は、text []型ではなく、boolean型でなければなりませんSQL状態:42804文字:29

66
David

代わりに書く:

select * from table where name ~ 'foo'

「〜」演算子は、一致するサブグループを抽出するのではなく、正規表現が一致するかどうかのブール結果を生成します。

119
araqnid

そこに一致演算子を使用するだけです:

select * from table where name ~ 'foo';
41
Maxim Sloyko