解决like中无法匹配下划线的问题
来源:互联网 发布:域名交易网站有哪些 编辑:程序博客网 时间:2024/06/05 04:27
转载自:收藏了很久了忘记了
如果想检索出字段中包含下划线“_”的内容,该如何书写SQL语句呢?
之所以问这个问题,是因为在Oracle中下划线在like中有着特殊的含义,它表示匹配任意一个字符。因此在查询包含下划线内容的时候需要“特殊关照”一下。
既然被问到了这个问题,简单记录一下两种规避的方法,供参考。
1.创建实验表,并初始化三条数据
sec@ora10g> create table t (x varchar2(10));
Table created.
sec@ora10g> insert into t values ('sec');
1 row created.
sec@ora10g> insert into t values ('secooler');
1 row created.
sec@ora10g> insert into t values ('sec_ooler');
1 row created.
sec@ora10g> commit;
Commit complete.
2.确认表T中的数据,其中包含两条不带下划线的内容,一条带下划线的内容。
sec@ora10g> select * from t;
X
----------
sec
secooler
sec_ooler
3.使用like语句的错误查询
sec@ora10g> select * from t where x like '%_%';
X
----------
sec
secooler
sec_ooler
为什么错误?
因为在like语句中的下划线的含义是“任意一个字符”,类似“%”代表匹配任意多个字符的。
4.正确的查询方法
能想到的有如下两种方法。
1)第一种方法使用escape转义
sec@ora10g> select * from t where x like '%\_%' escape '\';
X
----------
sec_ooler
escape的内容可以任意,只要保证前后一致即可。
sec@ora10g> select * from t where x like '%|_%' escape '|';
X
----------
sec_ooler
sec@ora10g> select * from t where x like '%*_%' escape '*';
X
----------
sec_ooler
2)使用instr函数辅助判断
使用instr函数判断字段中是否包含“_”,如果包含返回值是非零的,如果不包含则返回值是零。
sec@ora10g> select * from t where instr(x,'_')!=0;
X
----------
sec_ooler
3)
sec@ora10g> select ascii('_') from dual;
ASCII('_')
----------
95
5.小结
任何语言都存在需要“特殊关照”的情况,这需要具体问题具体分析,发现一个问题解决一个问题,不积跬步无以至千里。
Good luck.
secooler
09.12.07
-- The End --
之所以问这个问题,是因为在Oracle中下划线在like中有着特殊的含义,它表示匹配任意一个字符。因此在查询包含下划线内容的时候需要“特殊关照”一下。
既然被问到了这个问题,简单记录一下两种规避的方法,供参考。
1.创建实验表,并初始化三条数据
sec@ora10g> create table t (x varchar2(10));
Table created.
sec@ora10g> insert into t values ('sec');
1 row created.
sec@ora10g> insert into t values ('secooler');
1 row created.
sec@ora10g> insert into t values ('sec_ooler');
1 row created.
sec@ora10g> commit;
Commit complete.
2.确认表T中的数据,其中包含两条不带下划线的内容,一条带下划线的内容。
sec@ora10g> select * from t;
X
----------
sec
secooler
sec_ooler
3.使用like语句的错误查询
sec@ora10g> select * from t where x like '%_%';
X
----------
sec
secooler
sec_ooler
为什么错误?
因为在like语句中的下划线的含义是“任意一个字符”,类似“%”代表匹配任意多个字符的。
4.正确的查询方法
能想到的有如下两种方法。
1)第一种方法使用escape转义
sec@ora10g> select * from t where x like '%\_%' escape '\';
X
----------
sec_ooler
escape的内容可以任意,只要保证前后一致即可。
sec@ora10g> select * from t where x like '%|_%' escape '|';
X
----------
sec_ooler
sec@ora10g> select * from t where x like '%*_%' escape '*';
X
----------
sec_ooler
2)使用instr函数辅助判断
使用instr函数判断字段中是否包含“_”,如果包含返回值是非零的,如果不包含则返回值是零。
sec@ora10g> select * from t where instr(x,'_')!=0;
X
----------
sec_ooler
3)
sec@ora10g> select ascii('_') from dual;
ASCII('_')
----------
95
5.小结
任何语言都存在需要“特殊关照”的情况,这需要具体问题具体分析,发现一个问题解决一个问题,不积跬步无以至千里。
Good luck.
secooler
09.12.07
-- The End --
0 0
- 解决like中无法匹配下划线的问题
- 解决like中无法匹配下划线的问题
- SQL搜索下划线,like中不能匹配下划线的问题
- SQL搜索下划线,like中不能匹配下划线的问题
- sql server中like无法匹配下划线问题解决方案
- SQL Server中like匹配下划线的方法
- SQL Server中like匹配下划线的方法【转】
- 数据库原理课本中模糊匹配 like 下划线匹配多字符问题
- 使用模糊查询Like时中文匹配下划线通配符无效的问题
- Oracle中like查询下划线等特殊字符的处理
- Oracle中like查询下划线等特殊字符的处理
- Oracle中like查询下划线等特殊字符的处理
- Oracle中like查询下划线等特殊字符的处理
- Oracle中like查询下划线等特殊字符的处理
- Oracle中like查询下划线等特殊字符的处理
- Oracle中like查询下划线等特殊字符的处理
- 关于ORACLE中使用LIKE进行多字段模糊匹配的一种解决思路
- Mybatis解决sql中like通配符模糊匹配
- nodejs相关
- POJ 2253-Frogger (Prim)
- 递归(以及几个关于递归的小例子)
- ORACLE 几个常用的函数
- QML官方系列教程——Qt Quick Layouts
- 解决like中无法匹配下划线的问题
- 提问20140613
- 让c++ 函数返回一个数组
- jQuery中使用Ajax与后台交互实例
- 股市基础知识、主力建仓之选股、建仓【二】
- 面向对象JavaScript开发实战
- Android存储设备管理
- 线程和进程
- oracle提供的分析函数 cube(),rollup(),grouping sets()-----关注grouping sets用法及原理