DM数据库用图形初始化实例时,可勾选弃选:字符串比较大小写敏感
比较大小写敏感,就是区分大小写
比较大小写不敏感,就是不区分大小写
大小写敏感的时候,小写的标志符要用双引号" "引起来,要不然会被系统自动转化为大写
这个区分的地方有以下两点
1) 标志符,如表名, 视图名,存储过程名,表的字段名
2) 字段内容 如where address = ‘XXX’,这里的XXX就是字段内容
简单示例:
若设置为大小写不敏感,则认为abc, Abc,ABC之间是相互等价的,如建表时表名字段名大小写可随便写,查询的时候大小写随便写,也不会报错。
Create table aBc (x int, Y varchar(8));
Select X,Y FROM ABC;
设置为大小写敏感,则认为abc 和 ABC是不同的, 但要注意小写要用" "引起来
图形化:设置敏感,如图勾选,不敏感取消勾选
命令行 设置不敏感:(参数值Y,y,1 表示敏感,N,n,0表示敏感)
[dmdba@localhost bin]$ ./dminit PATH=/dm8/data CASE_SENSITIVE=0
在敏感的实例上 做测试:
CREATE TABLE A(address varchar(8));
– 以下查询都不会报错,创建表时,小写的表名/字段名都会被转成大写,查询时也一样
SELECT address FROM A;
SELECT address FROM a;
SELECT ADDRESS FROM A;
SELECT ADDRESS FROM a;
CREATE TABLE B (“address” varchar(8));
– 以下查询报错,无效的列名[ADDRESS],因为创建表时,已确定字段名是小写
SELECT address FROM B;
SELECT ADDRESS FROM B;
SELECT "ADDRESS" FROM B;
– 给字段名加上双引号,查询成功
SELECT "address" FROM B;
CREATE TABLE C (address varchar(8));
INSERT INTO C values ('M');
INSERT INTO C values ('m');
INSERT INTO C values ('n');
–只能查到一条记录,大写M和m有区别
SELECT * FROM C WHERE address = 'M';
CREATE TABLE “d” (address varchar(8));
– 执行失败,建表时确定表名是小写
INSERT INTO d values ('xyz');
INSERT INTO D values ('xyz');
– 执行成功,表名需加双引号
INSERT INTO "d" values ('xyz');
CREATE TABLE E (“address” varchar(8));
– 小写的字段名,插入包含小写大写数据成功
insert into E VALUES ('xYz');
– 字符串全小写,查询不到数据
select * from E where "address" = 'xyz';
– 保持和数据大小写一致,查询成功
select * from E where "address" = 'xYz';
注意:当大小写敏感时,标志符全大写还加双引号时,没有任何意义。
在不敏感的实例上 做测试:
CREATE TABLE A(address varchar(8));
– 以下查询都不会报错
SELECT address FROM A;
SELECT address FROM a;
SELECT ADDRESS FROM A;
SELECT ADDRESS FROM a;
CREATE TABLE B (“address” varchar(8));
– 查询都无报错
SELECT address FROM B;
SELECT ADDRESS FROM B;
SELECT "ADDRESS" FROM B;
SELECT "address" FROM B;
CREATE TABLE C (address varchar(8));
INSERT INTO C values ('M');
INSERT INTO C values ('m');
INSERT INTO C values ('n');
–可以查到两条记录,不区分大小写,认为M和m是一样的
SELECT * FROM C WHERE address = 'M';
注意:当大小写不敏感时,标志符加双引号时,也没有任何意义。
更多资讯请上达梦技术社区了解:https://eco.dameng.com