Oracle 实现查询不区分大小写

Oracle 实现查询不区分大小写

1、方式一
转为小写  LOWER('ABC') 结果 abc
转为大写  UPPER('aBc') 结果 ABC

select * from table lower(FAMILY_NAME) like lower(#{familyName}) --将字段全转成小写
select * from table upper(FAMILY_NAME) like upper(#{familyName}) --将字段全转成大写
2、方式二
REGEXP_LIKE(x, pattern [, match_option])   
  
当源字符串x匹配正则表达式pattern时,返回true。
可以使用match_option修改默认匹配选项,该参数可以被设置为:   
  
- 'c', 说明在进行匹配时区分大小写(默认选项)   
- 'i', 说明在进行匹配时不区分大小写   
- 'n', 允许使用可以匹配任意字符的操作符(通常是'.')   
- 'm', 将x作为一个包含多行的字符串  


SELECT * FROM test_reg WHERE REGEXP_LIKE(name, '(a)\1', 'i');  
上面的SQL语句匹配test_reg表中name列含有两个连续字符'a'(不区分大小写)的行,如name='SaAs'。
此外,这里我们还使用了正则表达式中的后引用语法——\n表示重复n次上次匹配的内容,
此处(a)\1表示匹配两个连续的字符'a'
3、方式三
ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=binary_ci;

Oracle 默认是区分大小写,如果不要区分,就要额外的设置。
这个是在当前会话上,也就是说在每次发起查询的时候都需要执行这个才能起作用的。

参考资料:
1、https://blog.csdn.net/wdmiye/article/details/89411168 【20211208】
2、https://blog.csdn.net/huaishuming/article/details/8983184 【20211208】
3、https://ask.csdn.net/questions/208113 【20211208】

猜你喜欢

转载自blog.csdn.net/JohinieLi/article/details/121783721