web-dev-qa-db-ja.com

LIKEクエリを使用して、PostgreSQLでリテラルパーセント記号(%)をどのように見つけることができますか?

some(すべてではない)値にパーセンテージが含まれているテーブルにcharacter varyingエントリがあります(例:'12%''97%'など)。すべてのパーセンテージを含む値。つまり、パーセント記号('%')で終わるすべての値を検索したいと思います。

19
magnus

あなたはこのように試すことができます:

SELECT * FROM my_table  WHERE my_column LIKE '%\%%' ESCAPE '\';

形式

 <like predicate> ::=
      <match value> [ NOT ] LIKE <pattern>
        [ ESCAPE <escape character> ]

 <match value> ::= <character value expression>

 <pattern> ::= <character value expression>

 <escape character> ::= <character value expression>
16
Rahul Tripathi

リテラル%記号をエスケープする必要があります。デフォルトでは、エスケープ文字はバックスラッシュです。

SELECT * FROM my_table  WHERE my_column LIKE '%\%';

この場合、最初の%記号はmy_columnの開始シーケンスと一致します。残りの\%は、リテラル%文字として解釈されます。したがって、組み合わせは次のとおりです。%文字で終わるすべてのものに一致します。

SQLFiddle

8
Patrick

私は正規表現を使用してしまいました:

select * from my_table where my_column ~ '%$';

ただし、LIKE演算子/比較を使用してそれが可能かどうかを知りたいのですが。

0
magnus