用于控制标识符大小写是否敏感。当大小写敏感时,系统自动转换不带“”的标识符为大写;当大小写不敏感时,系统不会转换标识符的大小写,系统比较函数会将大写字母全部转为小写字母再进行比较。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。需要注意的是此参数在数据库创建成功后无法修改。
大小写敏感时,数据库会自动将不带””的标识符统一转换为大写,示例如下:
create table test(id int);
insert into test values (1);
SELECT TABLE_NAME FROM USER_TABLES;
从系统表中查询,发现表名已被转换为了大写。因此,以下查询方式可以成功查询到数据
select * from TEST;
select * from test;--test被转换为大写匹配
select * from "TEST";
select * from Test;--Test被转换为大写匹配
需要创建小写对象时,对象名需要带""创建,示例如下:
create table “testl”(id int);
insert into “testl” values (1);
SELECT TABLE_NAME FROM USER_TABLES;
从系统表中查询,发现表名保持小写
因此,只有该查询方式可以成功查询到数据
select * from “testl”
大小写敏感参数在对表中内容做比较时同样具有影响,示例如下:
create table testdata (c1 varchar);
insert into testdata values ('a'),('A');
select count(*) from testdata where c1 = 'a';
select count(*) from testdata where c1 = 'A';
此时数据库大小写敏感,因此字符串’a’与’A’视为不同的字符串
当大小写不敏感时,系统不会转换标识符的大小写。但比较函数会将字母统一转换为小写后进行比较,示例如下:
create table TEST (id int);
create table qqq (id int);
SELECT TABLE_NAME FROM USER_TABLES;
从系统表中查询,可以发现表名与创建语句中一致。由于比较函数会将字母统一转换为小写后进行比较,以下查询方式均可以成功查询到数据(以TEST表为例):
select * from TEST;
select * from test;
select * from TEst;
select * from "TEST";
select * from "test";
select * from "TEst";
类似地,在大小写不敏感的情况下,对象名是否加""对查询也没有影响
CREATE TABLE "b"(id int);
insert into b values (1);
SELECT * FROM b;
SELECT * FROM B;
SELECT * FROM "b";
SELECT * FROM "B";
大小写不敏感时,由于比较函数转换的原因,’A’与‘a’视为同一字符串,因此对字符串的比较操作结果与大小写敏感时结果不同,示例如下:
create table testdata (c1 varchar);
insert into testdata values ('a'),('A');
select count(*) from testdata where c1 = 'a';
select count(*) from testdata where c1 = 'A';
此时‘a’与‘A’在进行比较时视为相等,因此select语句的结果为2。
达梦社区技术https://eco.dameng.com
文章
阅读量
获赞
