注册
CASE_SENSITIVE大小写敏感详解
培训园地/ 文章详情 /

CASE_SENSITIVE大小写敏感详解

干煸牛蛙 2023/08/30 2874 1 0

部署达梦数据库,使用dmini命令进行初始化时有许多可选参数,这些参数可以帮我们按照需求配置自己的数据库。

image.png

其中CASE_SENSITIVE(大小写敏感)的是一个非常重要的选项,配置失误可能会影响到后续数据的识别,且建库后无法修改;在这里单独描述一下。

CASE_SENSITIVE :指定对数据库中的字符比较时大小写是否敏感 值Y或1为敏感,N或0为不敏感。

--查询大小写是否敏感 select * from v$option where PARA_NAME='GLOBAL_STR_CASE_SENSITIVE';
--创建一个表并插入数据,表名t1和字段名id都用小写,并且分别插入大写和小写的a作为数据 create table t1(id varchar2); insert into t1 values('a'); insert into t1 values('A'); commit;

当设置CASE_SENSITIVE=1即大小写敏感时

SQL> select * from v$option where PARA_NAME='GLOBAL_STR_CASE_SENSITIVE'; 行号 PARA_NAME PARA_VALUE ---------- ------------------------- ---------- 1 GLOBAL_STR_CASE_SENSITIVE 1 SQL> select * from v$option where PARA_NAME='global_str_case_sensitive'; 未选定行 ##大小写敏感时用小写的参数名没有查到内容 select table_name from user_tables; ##表名和字段名创建时自动转成了大写 行号 TABLE_NAME ---------- ---------- 1 T1 SQL> select id,id name from t1 where id='a'; ##表中的数据大小写是区分开来的 行号 ID NAME ---------- -- ---- 1 a a

表名,字段名,字段别名都自动转成了大写
且查询表中的数据时严格区分大小写。

当设置CASE_SENSITIVE=0即大小写不敏感时

SQL> select * from v$option where PARA_NAME='GLOBAL_STR_CASE_SENSITIVE'; 行号 PARA_NAME PARA_VALUE ---------- ------------------------- ---------- 1 GLOBAL_STR_CASE_SENSITIVE 0 SQL> select * from v$option where PARA_NAME='global_str_case_sensitive'; 行号 PARA_NAME PARA_VALUE ---------- ------------------------- ---------- 1 GLOBAL_STR_CASE_SENSITIVE 0 SQL> select table_name from user_tables; ##表和字段名按创建时的大小写命名 行号 table_name ---------- ---------- 1 t1 SQL> select id,id name from t1 where id='a'; ##表数据不区分大小写 行号 id name ---------- -- ---- 1 a a 2 A A

表名,字段名,字段别名不会自动转成大写
且查询表中的数据时不区分大小写。

事件举例:

达梦A库:初始化为大小写敏感
执行:
create table test1 (c1 varchar2,unique(c1));
insert into table test1 values('ABCD');
insert into table test1 values('abcd');
commit

达梦B库:初始化大小写不敏感
将A库的test1表迁移到B库,看是否能成功迁移
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服