1

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

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

但是,此查询不提供任何结果。此外,如何将“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 回答