达梦数据库 CASE_SENSITIVE参数的理解
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
原文地址:https://blog.csdn.net/qq_44669390/article/details/140552433
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!