1

Oracleデータベースで次の文字列「50%off」と一致させる必要があります。SQLクエリを作成しました。

  select *
     from table1
     where column1 like '%[0-9]+\% off%' ESCAPE '\';

ただし、このクエリは結果を提供しません。さらに、1つのクエリで「50%オフ」と「$ 50オフ」を一致させるにはどうすればよいですか?

'%[0-9]+\%? off%' ESCAPE '\'

上記のものも機能しません:(

私が機能した唯一のクエリは次のとおりです。

select *
         from table1
         where column1 like '%\% off%' ESCAPE '\';
4

1 に答える 1

4

OracleのLIKE演算子は、単一文字 ( _) および複数文字 ( %) のワイルドカードのみを受け入れ、正規表現は受け入れません。

代わりに次のREGEXP_LIKE条件を使用します。

SQL>  WITH DATA AS (
  2   SELECT '50% off' txt FROM dual
  3   UNION ALL SELECT '$50 off' txt FROM dual)
  4   SELECT *
  5     FROM DATA
  6    WHERE regexp_like(txt, '([[:digit:]]+%)|(\$[[:digit:]]+) off');

TXT
-------
50% off
$50 off
于 2013-02-20T12:37:55.150 に答える