这几天看的oca的教材,期间做了一个查询操作
select owner,table_name,comments
from all_tab_comments
where table_name='CHANGE_LOG';
是个查询表注释的操作,敲得是后表名用的是‘chang_log’,没有用大写,结果就是查不出来,之前总是记得不区分大小写,这回又区分了,搜寻答案的过程总是收获颇丰
1、在查询时时区分大小写的,可做实验如下
创建test表,有一列名为ID,值a
select * from test where id = 'a';
select * from test where id = 'A';
结果是不同的
2、有解除这种区分大小写的方法:ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=binary_ci;
还有给出解释的一篇文章,不过后半部分没懂、、、
3、找结果的过程还发现一个11g用户口令区分大小写的方法BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
我的版本
在11g中有个初始参数可以供用户控制口令用不用区分大小写,该参数为:
sec_case_sensitive_logon=true 区分大小写 (default)
sec_case_sensitive_logon=false 不区分大小写
4、上面链接的博客里set autot on这个命令没懂什么意思
5、在不知道要查询的字符串在数据库中存储的是大写还是小写的情况下,可以用UPPER(name) = 'A',即先统一变成大写,或用LOWER变小写