在Oracle中使用SQL运算符时,如何转义通配符(_和%)LIKE?
_
%
LIKE
我今天遇到一个愚蠢的问题。我需要使用来搜索_varchar列上是否存在下划线LIKE。正如预期的那样,它不起作用- 因为根据SQL,下划线是通配符。这是我的(简化)代码:
create table property ( name varchar(20), value varchar(50) ); insert into property (name, value) values ('port', '8120'); insert into property (name, value) values ('max_width', '90'); insert into property (name, value) values ('taxrate%', '5.20');
我在PostgreSQL中尝试了以下查询,它们返回了我想要的行:
select * from property where name like '%\_%'; -- should return: max_width select * from property where name like '%\%%'; -- should return: taxrate%
不幸的是,它在Oracle 12c中不起作用。是否有“标准”的转义通配符方式?还是至少在Oracle中有效?
您可以使用的escape语法
escape
您可以使用子句包含实际字符%或_在模式中,该ESCAPE子句标识转义字符。如果转义字符在字符%或_模式之前,则Oracle会在模式中按字面意义解释此字符,而不是将其解释为特殊的模式匹配字符。
ESCAPE
因此,您可以执行以下操作:
select * from property where name like '%\_%' escape '\'; NAME VALUE -------------------- -------------------------------------------------- max_width 90 select * from property where name like '%\%%' escape '\'; NAME VALUE -------------------- -------------------------------------------------- taxrate% 5.20