大家在使用达梦数据库的时候经常对大小写敏感的情况感到困惑,下面给大家详细解读一下。
大小写敏感参数是达梦数据库初始化时的一个全局参数,默认是敏感的,并且设定后不可更改。
dbca 配置助手界面如下:
dminit 命令行工具配置如下:
dminit path=d:\dmdbms\data CASE_SENSITIVE=1
查询大小写敏感设置的情况:
SELECT CASE_SENSITIVE(); --结果为 1 是大小写敏感,结果为 0 是不敏感
这个地方其实很多朋友都搞错了,以为大小写敏感是针对对象名的,其实主要是针对比较表中数据的场景。
首先看看对表中内容作比较时大小写敏感的影响。
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"; --执行成功
文章
阅读量
获赞