达梦数据库 CASE_SENSITIVE参数的理解

1.CASE_SENSITIVE是什么

CASE_SENSITIVE的意思是标识符大小写敏感,是达梦数据库初始化时的一个全局参数。当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,系统比较函数会将大写字母全部转为小写字母再进行比较。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。缺省值为 Y。可选参数。
此参数在数据库创建成功后无法修改,可通过系统函数 SF_GET_CASE_SENSITIVE_FLAG()或 CASE_SENSITIVE()查询设置的参数置。
在这里插入图片描述
查询大小写敏感的配置情况
在这里插入图片描述

2.大小写敏感对表名的影响

2.1 CASE_SENSITIVE设置为N时

SQL> create table aa(id int);
操作已执行
已用时间: 2.953(毫秒). 执行号:64601.
SQL> select * from aa;
未选定行

已用时间: 0.639(毫秒). 执行号:64602.
SQL> select * from AA;
未选定行

已用时间: 0.441(毫秒). 执行号:64603.
SQL> select * from "aa";
未选定行

已用时间: 0.430(毫秒). 执行号:64604.
SQL> select * from "AA";
未选定行

已用时间: 0.360(毫秒). 执行号:64605.
SQL> create table "bb"(id int);
操作已执行
已用时间: 5.069(毫秒). 执行号:64606.
SQL> select * from bb;
未选定行

已用时间: 0.636(毫秒). 执行号:64607.
SQL> select * from BB;
未选定行

已用时间: 0.410(毫秒). 执行号:64608.
SQL> select * from "bb";
未选定行

已用时间: 0.402(毫秒). 执行号:64609.
SQL> select * from "BB";
未选定行

已用时间: 0.416(毫秒). 执行号:64610.

在大小写不敏感的情况下,加不加双引号都无所谓,对查询没有影响

2.2 CASE_SENSITIVE设置为Y时

SQL> create table aa(id int);
操作已执行
已用时间: 2.903(毫秒). 执行号:64401.
SQL> select * from aa;
未选定行

已用时间: 0.562(毫秒). 执行号:64402.
SQL> select * from AA;
未选定行

已用时间: 0.307(毫秒). 执行号:64403.
SQL> select * from "aa";
select * from "aa";
第1 行附近出现错误[-2106]:无效的表或视图名[aa].
已用时间: 0.363(毫秒). 执行号:0.
SQL> select * from "AA";
未选定行

已用时间: 0.449(毫秒). 执行号:64404.
SQL> create table "bb"(id int);
操作已执行
已用时间: 4.949(毫秒). 执行号:64405.
SQL> select * from bb;
select * from bb;
第1 行附近出现错误[-2106]:无效的表或视图名[BB].
已用时间: 0.206(毫秒). 执行号:0.
SQL> select * from BB;
select * from BB;
第1 行附近出现错误[-2106]:无效的表或视图名[BB].
已用时间: 0.180(毫秒). 执行号:0.
SQL> select * from "bb";
未选定行

已用时间: 0.460(毫秒). 执行号:64406.
SQL> select * from "BB";
select * from "BB";
第1 行附近出现错误[-2106]:无效的表或视图名[BB].
已用时间: 0.154(毫秒). 执行号:0.

3.大小写敏感对字段名的影响

3.1 CASE_SENSITIVE设置为N时

SQL> create table cc(id int,"name" varchar);
操作已执行
已用时间: 7.166(毫秒). 执行号:64611.
SQL> select id from cc;
未选定行

已用时间: 0.872(毫秒). 执行号:64612.
SQL> select ID from cc;
未选定行

已用时间: 0.473(毫秒). 执行号:64613.
SQL> select "id" from cc;
未选定行

已用时间: 0.426(毫秒). 执行号:64614.
SQL> select "ID" from cc;
未选定行

已用时间: 0.459(毫秒). 执行号:64615.
SQL> select name from cc;
未选定行

已用时间: 0.635(毫秒). 执行号:64616.
SQL> select NAME from cc;
未选定行

已用时间: 0.522(毫秒). 执行号:64617.
SQL> select "name" from cc;
未选定行

已用时间: 0.455(毫秒). 执行号:64618.
SQL> select "NAME" from cc;
未选定行

已用时间: 0.429(毫秒). 执行号:64619.

3.2 CASE_SENSITIVE设置为Y时

SQL> create table cc(id int,"name" varchar);
操作已执行
已用时间: 2.661(毫秒). 执行号:64407.
SQL> select id from cc;
未选定行

已用时间: 0.793(毫秒). 执行号:64408.
SQL> select ID from cc;
未选定行

已用时间: 0.305(毫秒). 执行号:64409.
SQL> select "id" from cc;
select "id" from cc;
第1 行附近出现错误[-2111]:无效的列名[id].
已用时间: 0.688(毫秒). 执行号:0.
SQL> select "ID" from cc;
未选定行

已用时间: 0.339(毫秒). 执行号:64410.
SQL> select name from cc;
select name from cc;
第1 行附近出现错误[-2111]:无效的列名[NAME].
已用时间: 0.249(毫秒). 执行号:0.
SQL> select NAME from cc;
select NAME from cc;
第1 行附近出现错误[-2111]:无效的列名[NAME].
已用时间: 0.259(毫秒). 执行号:0.
SQL> select "name" from cc;
未选定行

已用时间: 0.483(毫秒). 执行号:64411.
SQL> select "NAME" from cc;
select "NAME" from cc;
第1 行附近出现错误[-2111]:无效的列名[NAME].
已用时间: 0.234(毫秒). 执行号:0.

大小写敏感的时候,字段名也需要符合大小写敏感规则。即在大小写敏感的情况下,如果字段名需要小写,字段名一定要带上双引号,查询的时候也需要带上双引号,否则报错。

4.大小写敏感对表中内容的影响

4.1 CASE_SENSITIVE设置为N时

SQL> create table dd(name varchar);
操作已执行
已用时间: 1.806(毫秒). 执行号:64622.
SQL> insert into dd values('a');
影响行数 1

已用时间: 0.536(毫秒). 执行号:64623.
SQL> insert into dd values('A');
影响行数 1

已用时间: 0.374(毫秒). 执行号:64624.
SQL> select * from dd;

行号     name
---------- ----
1          a
2          A

已用时间: 0.457(毫秒). 执行号:64625.
SQL> select * from dd where name='a';

行号     name
---------- ----
1          a
2          A

已用时间: 0.615(毫秒). 执行号:64626.
SQL> select * from dd where name='A';

行号     name
---------- ----
1          a
2          A

已用时间: 0.512(毫秒). 执行号:64627.

大小写不敏感的时候,只要字段内容是一样的,不管是否大小写,都会把符合的内容全部返回。

4.2 CASE_SENSITIVE设置为Y时

SQL> create table dd(name varchar);
操作已执行
已用时间: 3.545(毫秒). 执行号:64412.
SQL> insert into dd values('a');
影响行数 1

已用时间: 0.635(毫秒). 执行号:64413.
SQL> insert into dd values('A');
影响行数 1

已用时间: 0.361(毫秒). 执行号:64414.
SQL> select * from dd;

行号     NAME
---------- ----
1          a
2          A

已用时间: 0.413(毫秒). 执行号:64415.
SQL> select * from dd where name='a';

行号     NAME
---------- ----
1          a

已用时间: 0.620(毫秒). 执行号:64416.
SQL> select * from dd where name='A';

行号     NAME
---------- ----
1          A

已用时间: 0.548(毫秒). 执行号:64417.

大小写敏感的时候,表中的内容也需要符合大小写敏感规则,只按照查询时的大小写来返回大小写的内容。

5.结论

1、大小写敏感针对表名、字段名、表内容。
2、在大小写敏感的情况下,如果表名、字段名、字段内容也需要加上双引号,否则会报错表名、视图表、字段名无效

达梦社区地址 https://eco.dameng.com

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值