Oracle 实现查询不区分大小写(设置数据库)
转http://blog.csdn.net/shl7765856/article/details/7622756
查询数据的时候。
SQL Server 默认 不区分大小写。 如果要区分,就要额外的设置。
oracle 默认 区分大小写。如果不要区分,就要额外的设置。
下面就是 Oracle 的明细部分了。
首先是测试表/数据
SQL> CREATE TABLE tab ( id INT,val VARCHAR2(10));
表已创建。
SQL> INSERT INTO tab values (1, 'ABC123'),(2, 'abc234'),(3, 'Abc345'),(4, 'aBC456'),(5, 'aBc567')
已创建5行。
=操作的例子
SQL> SELECT * FROM tab WHERE val = 'abc123';
无查询结果
SQL> SELECT * FROM tab WHERE val = 'ABC123';
查询结果
ID VAL
---------- ----------
1 ABC123
由上面的结果可以看出,默认情况下,Oracle 大小写敏感的。
下面通过设置环境变量,让Oracle对大小写不敏感
SQL> ALTER SESSION SET NLS_COMP=ANSI;
会话已更改。
SQL> ALTER SESSION SET NLS_SORT=binary_ci;
会话已更改。
SQL> SELECT * FROM tab WHERE val = 'abc123';
ID VAL
---------- ----------
1 ABC123
LIKE操作的例子
SQL> SELECT * FROM tab WHERE val LIKE 'a%';
ID VAL
---------- ----------
2 abc234
4 aBC456
5 aBc567
默认是大小写敏感。
SQL> ALTER SESSION SET NLS_COMP=ANSI; 会话已更改。 SQL> ALTER SESSION SET NLS_SORT=binary_ci; 会话已更改。
会话更改以后,条件是 val = 的,可以实现大小写不敏感
但是对于 val LIKE 的查询,还是大小写敏感的。
解决办法,使用正则表达式的方式来变通的处理。
SQL> SELECT * FROM tab WHERE 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个参数不填写的话)。
默认情况下:
SQL> SELECT * FROM tab WHERE REGEXP_LIKE (val, '^a');
ID VAL
---------- ----------
2 abc234
4 aBC456
5 aBc567
ALTER SESSION SET … 之后
SQL> SELECT * FROM tab WHERE REGEXP_LIKE (val, '^a');
ID VAL
---------- ----------
1 ABC123
2 abc234
3 Abc345
4 aBC456
5 aBc567
排序的例子
SQL> SELECT * FROM Tab ORDER BY val;
ID VAL
---------- ---------
1 ABC123
3 Abc345
4 aBC456
5 aBc567
2 abc234
默认排序为大小写敏感
SQL> ALTER SESSION SET NLS_COMP=ANSI;
会话已更改。 SQL> ALTER SESSION SET NLS_SORT=binary_ci;
会话已更改。
SQL> SELECT * FROM Tab ORDER BY val;
ID VAL
---------- ----------
1 ABC123
2 abc234
3 Abc345
4 aBC456
5 aBc567
关于中文汉字的排序
SQL> TRUNCATE TABLE Tab;
表被截断。
SQL> INSERT INTO tab
SELECT 1, '一' FROM DUAL UNION ALL
SELECT 2, '二' FROM DUAL UNION ALL
SELECT 3, '三' FROM DUAL UNION ALL
SELECT 4, '四' FROM DUAL UNION ALL
SELECT 5, '五' FROM DUAL; 已创建5行。 SQL> commit; 提交完成。 -- 按照拼音来排序 SQL> SELECT * FROM Tab ORDER BY NLSSORT(val, 'NLS_SORT=SCHINESE_PINYIN_M'); ID VAL ---------- ---------- 2 二 3 三 4 四 5 五 1 一 -- 按照笔画数来排序 SQL> SELECT * FROM Tab ORDER BY NLSSORT(val, 'NLS_SORT=SCHINESE_STROKE_M'); ID VAL ---------- ---------- 1 一 2 二 3 三 5 五 4 四 -- 按照偏旁部首来排序 SQL> INSERT INTO tab
SELECT 6, '人' FROM DUAL UNION ALL
SELECT 7, '十' FROM DUAL UNION ALL
SELECT 8, '土' FROM DUAL UNION ALL
SELECT 9, '士' FROM DUAL; 已创建4行。 SQL> commit; 提交完成。 SQL> SELECT * FROM Tab ORDER BY NLSSORT(val, 'NLS_SORT=SCHINESE_RADICAL_M'); ID VAL ---------- ---------- 1 一 2 二 3 三 5 五 6 人 7 十 4 四 8 土 9 士 已选择9行。
Oracle 实现查询不区分大小写(设置数据库)的更多相关文章
- Oracle 实现查询不区分大小写(SQL实现)
转为小写 LOWER('ABC') 结果 abc转为大写 UPPER('aBc') 结果 ABC 将数据库字段数据和前台接受的值全部转换为大写或者小写 例: select * from table ...
- Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令
Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令 ------------------------------------------------------------------ ...
- 45 个非常有用的 Oracle 日期查询语句
日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 “SYSDATE”来指定查询的日期. SELECT TRUNC (SYSDATE, 'MO ...
- 各种oracle参数查询语句
各种oracle参数查询语句 1.show parameter:--显示各个系统参数配置 2.select * from v$parameter;--显示各个系统参数配置 2.show paramet ...
- Oracle树查询及相关函数
Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Or ...
- oracle提高查询效率的34条方法
注:本文来源:远方的守望者 <oracle提高查询效率的34条方法> oracle提高查询效率的34条方法 1.选择最有效率的表名顺序 (只在基于规则的优化器中有效): ORACLE的解 ...
- Oracle之 dmp导入/导出、数据库操作等过程中的字符集问题
影响Oracle数据库字符集最重要的参数是NLS_LANG参数. 它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言.地域和字符集),每 ...
- Oracle日常运维操作总结-数据库的启动和关闭
下面是工作中对Oracle日常管理操作的一些总结,都是一些基本的oracle操作和SQL语句写法,在此梳理成手册,希望能帮助到初学者(如有梳理不准确之处,希望指出). 一.数据库的启动和关闭 1.1 ...
- Oracle(限定查询1)
3.1.认识限定查询 例如:如果一张表中有100w条数据,一旦执行了“SELECT * FROM 表”语句之后,则将在屏幕上显示表中的全部数据行的记录,这样即不方便浏览,也有可能造成死机的问题出现,所 ...
随机推荐
- Luogu P1638 逛画展 【二分答案】
题目描述 博览馆正在展出由世上最佳的 M 位画家所画的图画. wangjy想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字, a和b,代表他要看 ...
- js学习笔记-事件委托
通过事件委托,你可以把事件处理器绑定到父元素上,避免了把事件处理器添加到多个子级元素上.从而优化性能. 事件代理用到了事件冒泡和目标元素.而任何一个元素的目标元素都是一开始的那个元素. 这里首先要注意 ...
- SpringMVC -- 必知必会
SpringMVC基于模型--视图--控制器(Model-View-Controller,MVC)模式实现,属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面.它通 ...
- iOS programming Code Snippet Library
iOS programming Code Snippet Library The freebie code comes from the code snippet library. 代码来自cod ...
- C#方法参数关键字
一.params关键字 prams告诉函数的调用者,该函数的参数数量是可变,如果调用函数的参数标识了params关键字,那么我们可以使用逗号分割的参数或者一个数组来作为参数: 1.这里只能是数组,Li ...
- thinkphp5 404 file_put_contents 无法打开流:权限被拒绝
如果你用TP的时间比较长,或者说你比较了解TP的人都会知道,TP的runtime它需要的权限是很大的,如果你只给一般权限肯定是不行的,通常都是给runtime权限:777: linux命令如下: cd ...
- Shorthand Argument Names $0 : 只用于指代Closer声明中的形参
Shorthand Argument Names Swift automatically provides shorthand argument names to inline closures, w ...
- day21-3 类的组合
目录 类的组合 组合的应用 类的组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象 组合的好处:解决类与类之间代码冗余的问题 组合的应用 需求:假如我们需要给学生增添课程属性, ...
- vue脚手架引入swiper
方法一: 下载swiper: npm install swiper --save-dev swiper4.0使用入口:http://www.swiper.com.cn/usage/index.html ...
- S-HR之导入模板指向实现类配置
SELECT * FROM t_bs_basefileimpmap where FENTITYNAME='com.kingdee.eas.hr.affair.app.ResignBizBillEntr ...