带有数字和%字符的SQL正则表达式

时间:2013-02-20 12:29:52

标签: sql database oracle

我需要在Oracle db中匹配以下字符串“50%off”。我已经创建了一个SQL查询。

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

但是此查询不提供任何结果。 此外,如何将“50%off”和“50美元折扣”与一个查询相匹配?

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

以上一项也不起作用:(

我工作的唯一问题是:

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

1 个答案:

答案 0 :(得分: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