大家在使用达梦数据库的时候经常对大小写敏感这个产生困惑,下面给大家详细解读一下
1.大小写敏感参数是什么?
大小写敏感参数是达梦初始化数据库的时候的一个全局参数,默认是敏感的,并且设定后不可更改
--dbca 配置助手界面如下:
--dminit命令行工具配置如下:
dminit path=d:\dmdbms\data CASE_SENSITIVE=1
--查询大小写敏感设置的值
SELECT CASE_SENSITIVE(); --结果为1是大小写敏感,结果为0是不敏感
2.大小写是针对对象名的还是针对表里面的数据的?
这个地方其实很多朋友都搞错了,以为是针对对象名的,其实主要是针对表里面的数据比较的时候大小写是否敏感
--首先看看对表里面内容做比较的时候的影响
CREATE TABLE TEST_CASE_SENSITIVE(C1 VARCHAR(100));
INSERT INTO TEST_CASE_SENSITIVE VALUES('a');
INSERT INTO TEST_CASE_SENSITIVE VALUES('A');
COMMIT;
--大小写敏感的情况
select count(*) from TEST_CASE_SENSITIVE where c1='a'; --结果为1
select count(*) from TEST_CASE_SENSITIVE where c1='A'; --结果为1
--大小写不敏感的情况
select count(*) from TEST_CASE_SENSITIVE where c1='a'; --结果为2
select count(*) from TEST_CASE_SENSITIVE where c1='A'; --结果为2
--再来看看大小写敏感参数对对象名的影响
--在大小写敏感的情况下,创建对象时不要对对象名加双引号,大小写对对象名没有影响
create table a(c1 int);
select * from a; --执行成功
select * from A; --执行成功
select * from "A"; --执行成功
select * from "a"; --执行失败:无效的表或视图名[a]
create table "b"(c1 int);
select * from b; --执行失败:无效的表或视图名[B]
select * from B; --执行失败:无效的表或视图名[B]
select * from "b"; --执行成功
select * from "B"; --执行失败:无效的表或视图名[B]
--注意:在达梦管理工具中使用图形界面创建对象时如果用小写就会自动加上双引号
--查询的时候必须使用双引号来访问,很多朋友问题注意出在这里,如果在大小写敏
--感的库里面使用图形界面而不是SQL语句来创建对象,一定注意要用大写,用小写
--就会自动加双引号,强制保持大小写了
--------------------------------------------------------------------------------------
--在大小写不敏感的情况下,加不加双引号都无所谓,对查询没有影响
create table a(c1 int);
select * from a; --执行成功
select * from A; --执行成功
select * from "A"; --执行成功
select * from "a"; --执行成功
create table "b"(c1 int);
select * from b; --执行成功
select * from B; --执行成功
select * from "b"; --执行成功
select * from "B"; --执行成功
更多资讯请上达梦技术社区了解: https://eco.dameng.com