注册
CASE_SENSITIVE 参数作用总结
技术分享/ 文章详情 /

CASE_SENSITIVE 参数作用总结

Phi Sagittarii Merak 2026/07/02 39 0 0

参数作用

用于控制标识符大小写是否敏感。当大小写敏感时,系统自动转换不带“”的标识符为大写;当大小写不敏感时,系统不会转换标识符的大小写,系统比较函数会将大写字母全部转为小写字母再进行比较。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。需要注意的是此参数在数据库创建成功后无法修改。

大小写敏感时相关表现

对对象名的影响

大小写敏感时,数据库会自动将不带””的标识符统一转换为大写,示例如下:
create table test(id int);
insert into test values (1);
SELECT TABLE_NAME FROM USER_TABLES;
image.png
从系统表中查询,发现表名已被转换为了大写。因此,以下查询方式可以成功查询到数据

select * from TEST;
select * from test;--test被转换为大写匹配
select * from "TEST";
select * from Test;--Test被转换为大写匹配

image.png

需要创建小写对象时,对象名需要带""创建,示例如下:
create table “testl”(id int);
insert into “testl” values (1);
SELECT TABLE_NAME FROM USER_TABLES;
从系统表中查询,发现表名保持小写
image.png

因此,只有该查询方式可以成功查询到数据
select * from “testl”
image.png

对表内数据比较的影响

大小写敏感参数在对表中内容做比较时同样具有影响,示例如下:

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';

image.png
此时数据库大小写敏感,因此字符串’a’与’A’视为不同的字符串

大小写不敏感时相关表现

对对象名的影响

当大小写不敏感时,系统不会转换标识符的大小写。但比较函数会将字母统一转换为小写后进行比较,示例如下:
create table TEST (id int);
create table qqq (id int);
SELECT TABLE_NAME FROM USER_TABLES;
image.png
从系统表中查询,可以发现表名与创建语句中一致。由于比较函数会将字母统一转换为小写后进行比较,以下查询方式均可以成功查询到数据(以TEST表为例):

select * from TEST;
select * from test;
select * from TEst;
select * from "TEST";
select * from "test";
select * from "TEst";

image.png

类似地,在大小写不敏感的情况下,对象名是否加""对查询也没有影响

CREATE TABLE "b"(id int);
insert into b values (1);
SELECT * FROM b;    
SELECT * FROM B;    
SELECT * FROM "b";  
SELECT * FROM "B";  

image.png

对表内数据比较的影响

大小写不敏感时,由于比较函数转换的原因,’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';

image.png
此时‘a’与‘A’在进行比较时视为相等,因此select语句的结果为2。

达梦社区技术https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服