Oracle 大小写区分的处理
来源:互联网 发布:庄老师凸优化课件 编辑:程序博客网 时间:2024/05/16 01:13
查询数据的时候。
SQL Server 默认 不区分大小写。 如果要区分,就要额外的设置。点击打开链接
Oracle 默认 区分大小写。如果不要区分,就要额外的设置。
下面就是 Oracle 的明细部分了。
首先是测试表/数据
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 DUALUNION ALL
4 SELECT 3, 'Abc345' FROM DUAL UNION ALL
5 SELECT 4, 'aBC456' FROM DUALUNION ALL
6 SELECT 5, 'aBc567' FROM DUAL;
已创建5行。
=操作的例子
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 val = 'abc123';
未选定行
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 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
2 *
3 FROM
4 tab
5 WHERE
6 val = 'abc123';
ID VAL
---------- ----------
1 ABC123
LIKE操作的例子
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 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
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个参数不填写的话)。
默认情况下:
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 REGEXP_LIKE (val, '^a');
ID VAL
---------- ----------
2 abc234
4 aBC456
5 aBc567
ALTER SESSION SET … 之后
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 REGEXP_LIKE (val, '^a');
ID VAL
---------- ----------
1 ABC123
2 abc234
3 Abc345
4 aBC456
5 aBc567
排序的例子
SQL> SELECT
2 *
3 FROM
4 Tab
5 ORDER BY
6 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
2 *
3 FROM
4 Tab
5 ORDER BY
6 val;
ID VAL
---------- ----------
1 ABC123
2 abc234
3 Abc345
4 aBC456
5 aBc567
关于中文汉字的排序
SQL> TRUNCATE TABLE Tab;
表被截断。
SQL>
SQL> INSERT INTO tab
2 SELECT 1, '一' FROM DUAL UNION ALL
3 SELECT 2, '二' FROM DUAL UNION ALL
4 SELECT 3, '三' FROM DUAL UNION ALL
5 SELECT 4, '四' FROM DUAL UNION ALL
6 SELECT 5, '五' FROM DUAL;
已创建5行。
SQL> commit;
提交完成。
-- 按照拼音来排序
SQL> SELECT
2 *
3 FROM
4 Tab
5 ORDER BY NLSSORT(val, 'NLS_SORT=SCHINESE_PINYIN_M');
ID VAL
---------- ----------
2 二
3 三
4 四
5 五
1 一
-- 按照笔画数来排序
SQL> SELECT
2 *
3 FROM
4 Tab
5 ORDER BY NLSSORT(val, 'NLS_SORT=SCHINESE_STROKE_M');
ID VAL
---------- ----------
1 一
2 二
3 三
5 五
4 四
-- 按照偏旁部首来排序
SQL> INSERT INTO tab
2 SELECT 6, '人' FROM DUAL UNION ALL
3 SELECT 7, '十' FROM DUAL UNION ALL
4 SELECT 8, '土' FROM DUAL UNION ALL
5 SELECT 9, '士' FROM DUAL;
已创建4行。
SQL> commit;
提交完成。
SQL> SELECT
2 *
3 FROM
4 Tab
5 ORDER BY NLSSORT(val, 'NLS_SORT=SCHINESE_RADICAL_M');
ID VAL
---------- ----------
1 一
2 二
3 三
5 五
6 人
7 十
4 四
8 土
9 士
已选择9行。
- Oracle 大小写区分的处理
- Oracle 大小写区分的处理
- Oracle 大小写区分的处理
- Oracle中处理不区分大小写查询的处理
- Oracle中处理不区分大小写查询的处理
- Oracle中处理不区分大小写查询的处理 .
- SQL Server 中大小写区分的处理
- SQL Server 中大小写区分的处理
- git不区分大小写的处理方法
- oracle查询区分大小写
- PHP大小写的区分
- oracle 查询不区分大小写
- oracle like通配符区分大小写
- oracle密码不区分大小写
- 处理mysql不区分字母大小写的问题
- 如何处理类似于“不区分大小写的问题”
- 关于git不区分文件名大小写的处理
- Oracle 12c的用户密码默认是区分大小写的
- 文件io
- python排序问题
- Servlet处理表单重复提交and利用referer防盗链and实现request包含页面
- ios UITableView封装之下拉-上提-图片异步加载
- 5、理解面向对象程序设计——封装
- Oracle 大小写区分的处理
- 帮你下载你想要的网上视频
- 小谈Online-game服务器端设计
- 日语练习1_IPAD MINIを買う
- 网络游戏服务器设计
- java web开发将请求的参数转换为bean对象
- 安装python-2.5.2
- Parsley开发指南 1 概述
- 一篇访谈,只对其中的工具感兴趣,转载