如何在oracle的where子句中使用特殊字符'_'
Posted
技术标签:
【中文标题】如何在oracle的where子句中使用特殊字符\'_\'【英文标题】:How to use special character '_' in where clause of oracle如何在oracle的where子句中使用特殊字符'_' 【发布时间】:2019-03-18 18:05:02 【问题描述】:我想让名为“pl_name”的列包含_5M_
。所以我做了以下查询,但它给出了所有的值,但我想要pl_name
,比如AR_5M_testclient_986
使用的查询如下
select *from mn_table where status='Y' and upper(pl_name) like'%_5M_%'
【问题讨论】:
Underscore is not working in oracle like clause的可能重复 【参考方案1】:将下划线视为通配符条目。使用[_]
。
select * from mn_table where status='Y' and upper(pl_name) like '%[_]5M[_]%';
【讨论】:
【参考方案2】:下划线 _
在 SQL 中被视为通配符,因此它实际上是在尝试匹配任何字符。
在 Oracle 中,您可以使用转义字符来转义特殊字符:
select * from mn_table where status='Y' and upper(pl_name) like'%\_5M\_%' ESCAPE '\'
或者,来自Oracle LIKE docs:
您还可以通过重复搜索转义字符本身。 例如,如果@是转义字符,那么您可以使用@@ 搜索@。
select * from mn_table where status='Y' and upper(pl_name) like'%__5M__%' ESCAPE '_'
【讨论】:
以上是关于如何在oracle的where子句中使用特殊字符'_'的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 where 子句中的函数在 oracle 中执行一次?
如何在 select 的 where 子句中替换 oracle pl/sql 变量
如何在 oracle sql 数据库中使 WHERE 子句不区分大小写?