在达梦数据库初始化中CASE_SENSITIVE 默认值为Y/1,即大小写敏感。可用选值:Y/N or 1/0
对象标识符(表名、字段名、视图名等)和数据内容在英文字符方面是否区分大小写。
大小写敏感会牵扯到含英文字符数据内容的大小写辨别和对象标识符大小写辨别。
当开启大小写敏感时,书写的SQL语句中涉及到对象标识符的名称,会先自动将英文字符全部转成大写,再发送到数据库服务器解析。
当关闭大小写敏感时,数据库解析引擎原封不动的发送而来的SQL语句中涉及的对象标示符(即:禁用自动转大大写),不管是大写还是小写都认为是一个对象。
如果想让写入的对象名称原样发送到数据库服务器,可以使用英文半角双引号。
1.大小写敏感环境:
验证大小写敏感环境下不加双引号的小写转化成大写。加双引号原样保留。
创建表:
create table t1(v1 varchar(200)); 表名虽然是小写,但是未添加双引号,会转换成大写T1。
create table T1(v1 varchar(200)); 此时会报错
create table “t2”(v1 varchar(200)); 加双引号会原样保留。
create table T2(v1 varchar(200));
Manager可以看到三张表,且t1是被转换为T1了
插入数据
insert into t1 values('c'); 实际等于 insert into T1 values('c');
insert into “t1” values('c');
表名用英文半角双引号包裹后不会转换为大写T1,此时插入就报错。
此时T1表数据如下,可以看到字段名v1也被转换为V1:
select * from T1 where V1='c';
因为大小写敏感,此时只能查出一条数据。
2.大小写不敏感环境:
验证表名不会自动转换为大写,大小写为同一个对象。
create table t1(v1 varchar(200)); 表名不会转换成大写T1。
create table T1(v1 varchar(200));
此时创建会报对象已存在
Manager显示如下
insert into T1 values('c');
insert into t1 values('B');
这里不管表名大写小写都能插入成功。
此时数据如下:
select * from t1 where v1=’c’;
select * from t1 where v1=’C’;
不论大写还是小写c都能查出三条记录
社区地址:https://eco.dameng.com