达梦CASE_SENSITIVE参数

概念

case_sensitive参数用来设置字符串比较是否大小写敏感,用于确定数据库对象及数据是否区分大小写,默认为区分,不可更改。根本目的是为了兼容不同的数据库,从MYSQL和SQLSERVER 迁移过来的系统,建议使用大小写不敏感;从 ORACLE迁移过来的系统,建议使用大小写敏感,以便和原来系统匹配。

大小写敏感的问题,我们知道一共涉及到两类:

第一类是字段内容的比较区分;

第二类是对象名的比较区分。

我们在使用数据库的过程中,最常碰到的是第二类。

对于数据库来说,是希望对开发友好的,所以达梦数据库的策略和Oracle 的策略一样,即:

1.在建立对象的时候,随便写大写还是小写,数据库都处理成大写;

2.在查询的时候,对象名,不论大写还是小写,数据库都看成大写,在数据库中进行查询。

除了上述之外,还有“我就是要用小写,不要给设置成大写的场景”。

于是,数据库必须提供过一种方式,可以用来规避上述这种自动转换为大写,这个规避方式就是为对象名(字段名、表名、存储过程等等)加上双引号, 例如 CREATE TABLE "test";

举例测试

可以通过SELECT SF_GET_CASE_SENSITIVE_FLAG();查询是否大小写敏感库

1表示敏感,0表示不敏感。

 

  1. 大小写敏感库测试

create table test(name varchar);

insert into test values('aaa');

insert into test values('AAA');

insert into TEST(NAme) values('bbb');

create table Test(name varchar);

create table TEST(name varchar);

select dbms_metadata.get_ddl('TABLE','test','SYSDBA')from dual;

select dbms_metadata.get_ddl('TABLE','TEST','SYSDBA')from dual;

create table "test" ("name" varchar ,NAME varchar);

select * from test where name='AAa';

select * from test where name='AAA';

insert into "test" values('xiaoshu','XIAOSHU');

select * from "test" ;

执行结果如下:

 

 

 

 

不加双引号,创建表时会自动将表名和列名自动转换成大写形式,加双引号表名和列名则会保留原形式。create table test和create table "test"是不同的,前者会自动转换成TEST

  1. 大小写不敏感测试

初始化一个大小写不敏感的实例用作实验

./dminit path=/home/dmdba/dmdbms/ case_sensitive=0 charset=0 db_name=DMTEST instance_name=DMTEST

通过disql连接并执行相同的脚本,结果如下

 

 

总结

  1. 大小写敏感

不加双引号,创建表时会自动将表名和列名自动转换成大写形式,加双引号表名和列名则会保留原形式。create table test和create table "test"是不同的,前者会自动转换成TEST,后者保留原形式test。

大小写不同的两个表是不同对象。

一个表中,允许存在同名但大小写形式不同的字段。

如果不加双引号,SQL语句中表名和对象名会被自动转成大写

对于表中字符数据是严格区分大小写的

  1. 大小写不敏感
  1. 无论对不对表名或列名加双引号,表名和列名大小写形式不会发生变化,创建时是大写就是大写,是小写就是小写。
  2. 不允许存在同名的数据库对象,即使大小写不同也算同名。
  3. 一个表中,不允许出现相同字段名,大小写不同也算同名。
  4. 字段字符内容也不区分大小写,无论是大写还是小写都认为是相同的值

更多资讯请上达梦技术社区了解: https://eco.dameng.com

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值