查询数据的时候。
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行。
分享到:
相关推荐
oracle11g密码区分大小写问题,自11g开始,oracle缺省区分帐号的密码大小写(case sensitivity), 而11g以下版本则不区分, 在数据字典中以大写形式存在
本文首先讲述了Oracle内部表存储原理,在此基础上如何使Oracle设计的表及其字段显示为区分大小写的形式,最后通过具体例子分析了使用默认全部大写和大小写混写的利弊,同时给出来不同情况在Power Desginer(PD)中的...
DevExpress DXperience 使用 Linq 及CriteriaOperator 查找 Oracle 字符字段不区分大小写代码
java(区分大小写):yyyy-MM-dd HH:mm:ss 12小时制: java(区分大小写):yyyy-MM-dd hh:mm:ss 2)毫秒: java: SSS 24小时制: java(区分大小写):yyyy-MM-dd HH:mm:ss.SSS 12小时制: java(区分大...
就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事。直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。 通过查询资料发现需要设置collate(校对) 。 collate规则: *_bin: 表示的是binary case...
REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(string, pattern, ...modifier :模式(‘i’不区分大小写进行检索;’c’区分大小写进行检索。默认为’c’) SELECT REGEXP_SUBSTR('123,,,ABC,!@#,,,', '[^,]
1或者oracle, oracle数据库,不区分大小写,默认1,需java1.5及以上版本 2或者sqlserver, mssqlserver数据库,不区分大小写,需java1.6及以上版本 3或者mysql, mysql数据库,不区分大小写,需java1.5及以上版本 4或者...
4.3字符串是大小写敏感的,在比较时严格区分大小写 8 4.4 where子句后面可以跟多个条件表达式 8 4.5 between and运算符 8 4.6 in运算符(多值运算符) 8 4.7 like运算符 9 4.8 is null运算符 9 4.9比较和逻辑运算符...
看了下两年前上传的版本,感觉现在已经改了很多东西了,并且支持 Oracle (Oracle不区分大小写,但是可以改字段备注,然后生成实体类,就有大小写了) 代码生成器,可以生成 实体层,业务层,数据访问层, 存储过程, 数据...
oracle日常维护常用语句,如:表空间创建/密码设置不过期/用户解锁/无法导出空表设置/用户不区分大小写设置等
原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。 select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; 二、另要以24小时的形式显示出来要用HH24...
exists(select tname from tab where tname =’TABLENAME’) 记得表名要大写,因为ORACLE是区分大小写的,所有的表名都存放在tab表中 您可能感兴趣的文章:Sql Server中判断表、列不存在则创建的方法Mysql判断表字段...
域名,可以只使用 库名——SID区分大小写——……——数据路径选择,模版默认的是$ORACLE_BASE/oradata/dababase——备份数据的路径——内存分配(SGA专用内存,事务处理为主;PGA系统内存,数据为主)|Sizing中的块...
在 sql 中,首先要注意书写规范。虽然数据库不区分大小写,但是 sql 语句在执行时, ORACLE 会将它全部转化为大写,如果在写 SQL 语句时时就全部写成大写,能节省些资源。
程序员oracle金典 匹配一个...--要区分大小写 SELECT REGEXP_SUBSTR('2016-1-1','\d*$') FROM DUAL; SELECT SUBSTR('2016-2-01',INSTR('2016-2-01','-',-1)+1) FROM DUAL; SELECT SUBSTR('2016-05-16',INSTR('2016-05-
Conn sys/sys as sysdba–oracle数据库不区分大小写 2.sql文件 保存sql文件 save c:\test.txt 编辑sql语句,用记事本编辑 ed c:\1.txt –编辑 SQL 语句 ed –直接打开上一次缓存sql语句 描述数据表的结构 desc ...
了解表空间加密、区分大小写的口令、数据屏蔽以及其他特性。 自动存储管理 了解新的 SYSASM 角色、可变的区大小以及其他 ASM 改进。 可管理性 探究自动内存管理、多列统计信息、联机修补等更多特性。 缓存和...
本人在使用分页的时候嫌其麻烦,就自己改写了后为一个框架,暂时只支持对单表分页,该分页通过对表的相关反射,使用该分页只需要保证javaBean中的属性和表中的属性对应一致(不区分大小写)然后在页面上传上相关参数就...