最近、MySQLからPostgreSQLに変更しました。Mysql'REGEXP'キーワードを持つクエリを除いて、ほとんどのクエリは翻訳されています。
MySQL (prepared statement):
SELECT * FROM table WHERE ? REGEXP identifier;
「テーブル」があり、列の1つは「識別子」と呼ばれます。この「識別子」列には、実際の正規表現パターンが含まれています。
したがって、クエリで正規表現パターンを「ハードコーディング」する代わりに、パターンの識別子列を検索します。
Postgresqlでは、「REGEXP」キーワード(MySQLのみ)の代わりに「〜」キーワードを使用する必要がありますが、Postgresqlでは列からパターンを抽出できないようです。
私は成功せずに次のクエリを試しました:
SELECT * FROM table WHERE 'test' ~ "identifier";
ERROR: invalid regular expression: parentheses () not balanced
SELECT * FROM table WHERE "identifier" ~ 'test';
-> no results
テストの目的で、「識別子」列に値(すべてに一致する正規表現)として「。*」が含まれるレコードをいくつか作成しましたが、それでも適切な結果が得られません。
ヘルプは大歓迎です、ありがとう!