当前位置: 首页 > 面试题库 >

在LIKE中转义通配符

红砚文
2023-03-14
问题内容

在Oracle中使用SQL运算符时,如何转义通配符(_%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子句标识转义字符。如果转义字符在字符%_模式之前,则Oracle会在模式中按字面意义解释此字符,而不是将其解释为特殊的模式匹配字符。

因此,您可以执行以下操作:

select * from property where name like '%\_%' escape '\';

NAME                 VALUE                                             
-------------------- --------------------------------------------------
max_width            90

select * from property where name like '%\%%' escape '\';

NAME                 VALUE                                             
-------------------- --------------------------------------------------
taxrate%             5.20


 类似资料:
  • 问题内容: 如何在like子句中转义通配符? 例如: 有任何想法吗? 问题答案: 在Hibernate 3中,可以使用escape参数指定转义字符: 我认为这应该可行,尽管我从未在实践中尝试过。

  • 问题内容: 在较旧的服务器上,我无法使用准备好的语句,因为我目前正试图在将用户输入发送到MySQL之前完全转义用户输入。为此,我正在使用PHP函数。 由于此函数无法转义MySQL通配符%和_,因此我也正对这些通配符进行转义。 当我发送类似: 到数据库,然后再读回数据库,显示: 看着这个,我不明白为什么_前面有一个反斜杠,但是“和’却没有。因为它们都用\进行了转义,因此_’和”应该都显示相同,即,所

  • 问题内容: 我正在使用准备好的语句来执行mysql数据库查询。我想实现基于各种关键字的搜索功能。 为此,我需要使用关键字,我知道很多。而且我之前也使用过预处理语句,但是我不知道如何使用它,因为从以下代码中,我将在哪里添加? 我可以直接在as 或类似的东西中使用它吗?我在网络上看到很多帖子,但是在任何地方都没有好的答案。 问题答案: 您需要在值本身中而不是在准备好的语句SQL字符串中进行设置。 因此

  • 问题内容: 如何在node-mysql中转义MySQL LIKE语句? 遵循以下原则 结果是 这是语法错误。如果我使用的替代语法 导致类似的语法错误。我也尝试过 最终只是转义了’%’符号。 问题答案: 不知道为什么在上一个示例中转义了它,因为这对我来说很好: 当我在驱动程序中打开调试功能(作为参数传递给)时,它无法逃脱百分号: (它 确实 转义了单引号,但这仅用于显示目的) (使用)

  • 问题内容: 我正在使用准备好的语句来执行mysql数据库查询。我想实现基于各种关键字的搜索功能。 为此,我需要使用关键字,这一点我知道很多。而且我之前也使用过预处理语句,但是我不知道如何使用它,因为从以下代码中,我将在哪里添加? 我可以直接在或类似的东西中使用它吗?我在网络上看到很多帖子,但在任何地方都没有好的答案。 问题答案: 你需要在值本身中而不是在准备好的语句SQL字符串中进行设置。 因此,

  • 在Lucene.NET 3.0.3.0的通配符搜索中,我已经寻找了很长时间来转义特殊字符,如#,{,,[,],...,但我找不到任何可能的解决方案。 我使用StandardAnalyzer索引了我文档。字段“title”有属性field.store.yes和field.index.analysis。 搜索时,我为我的SearchTerm调用了MultiFieldQueryParser.Escape