我需要在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 '\';
答案 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