oracle 模糊查询 模糊大小写
我的模糊查询需求是不区分大小写.查询1:select*frompowerpwherep.subSystemlike'%jz%';无数据...查询2:select*from...
我的模糊查询需求是不区分大小写. 查询1: select * from power p where p.subSystem like '%jz%' ; 无数据... 查询2: select * from power p where p.subSystem like '%JZ%' ; 有数据... 我数据表中 subSystem 字段中的字段中凡是有这个 'jz' 字母的都是大写,即'JZ_F23566' , 怎样在用户模糊查询的时候无论输入大写还是小写,都要可以查询出这些语句. 尽量不要 '双like' 的方式.
展开
2013-04-01
展开全部
oracle 严格区分大小写upper()这个函数就是用来写改小写为大写的我想你的程序肯定传了一个变量对吧 比如语句可能是 select * from power p where p.subSystem like '%'''+变量+'''%' ;如果是这样就用个upper()select * from power p where p.subSystem like '%upper('''+变量+''')%' ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-01
展开全部
SQL> CREATE TABLE tab (
2 id INT,
3 val VARCHAR2(10)
4 );
表已创建。
SQL> INSERT INTO tab
2 SELECT 1, 'ABC123' FROM DUAL UNION ALL
3 SELECT 2, 'abc234' FROM DUAL UNION ALL
4 SELECT 3, 'Abc345' FROM DUAL UNION ALL
5 SELECT 4, 'aBC456' FROM DUAL UNION ALL
6 SELECT 5, 'aBc567' FROM DUAL ;
已创建5行。
Oracle 默认,大小写敏感
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 val LIKE 'a%';
ID VAL
---------- ----------
2 abc234
4 aBC456
5 aBc567
默认是大小写敏感。
解决办法,使用 正则表达式的方式来 变通的处理。
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 REGEXP_LIKE (val, '^a', 'i');
ID VAL
---------- ----------
1 ABC123
2 abc234
3 Abc345
4 aBC456
5 aBc567
注1:REGEXP_LIKE 的第3个参数 'i' 表示大小写敏感。
注2:对于环境变量 NLS_COMP 与 NLS_SORT的设置,会影响REGEXP_LIKE 执行的结果(假如第3个参数不填写的话)。
2 id INT,
3 val VARCHAR2(10)
4 );
表已创建。
SQL> INSERT INTO tab
2 SELECT 1, 'ABC123' FROM DUAL UNION ALL
3 SELECT 2, 'abc234' FROM DUAL UNION ALL
4 SELECT 3, 'Abc345' FROM DUAL UNION ALL
5 SELECT 4, 'aBC456' FROM DUAL UNION ALL
6 SELECT 5, 'aBc567' FROM DUAL ;
已创建5行。
Oracle 默认,大小写敏感
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 val LIKE 'a%';
ID VAL
---------- ----------
2 abc234
4 aBC456
5 aBc567
默认是大小写敏感。
解决办法,使用 正则表达式的方式来 变通的处理。
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 REGEXP_LIKE (val, '^a', 'i');
ID VAL
---------- ----------
1 ABC123
2 abc234
3 Abc345
4 aBC456
5 aBc567
注1:REGEXP_LIKE 的第3个参数 'i' 表示大小写敏感。
注2:对于环境变量 NLS_COMP 与 NLS_SORT的设置,会影响REGEXP_LIKE 执行的结果(假如第3个参数不填写的话)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有两种方法可以:
1、
select * from power p where p.subSystem like '%jz%'
union all
select * from power p where p.subSystem like '%JZ%' ;
2、select * from power p where p.subSystem (like upper('%jz%') or like lower('%jz%') );
1、
select * from power p where p.subSystem like '%jz%'
union all
select * from power p where p.subSystem like '%JZ%' ;
2、select * from power p where p.subSystem (like upper('%jz%') or like lower('%jz%') );
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from power where upper(subSystem) like '%'||upper(输入值)||'%' ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询