达梦CASE_SENSITIVE参数解析

1. 参数含义

标识符大小写敏感,默认值为 Y。

  • 当大小写敏感时,小写的标识符应用双引号括起,否则被转换为大写;
  • 当大小写不敏感时,系统不自动转换标识符的大小写,在标识符比较时也不区分大小写。

CASE_SENSITIVE大小敏感(Y),可选值:Y/N,1/0。该参数属于初始化参数,在创建实例时候定下来的,在参数配置文件dm.ini里没有记录。

大小写敏感通常涉及到2种对象:

  • 对象名
  • 数据

2. 环境描述

3. 创建实例

3.1. 创建大小写敏感实例lei1

复制代码
[dmdba@lei3 ~]$ dminit  PATH=/dmdba/data DB_NAME=lei1 instance_name=lei1 SYSDBA_PWD=Dameng123 PORT_NUM=5236 CASE_SENSITIVE=Y
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dmdba/data/lei1/lei101.log


 log file path: /dmdba/data/lei1/lei102.log

write to dir [/dmdba/data/lei1].
create dm database success. 2024-08-27 10:07:20

3.2. 创建大小写不敏感实例lei2

复制代码
[dmdba@lei3 ~]$ dminit  PATH=/dmdba/data DB_NAME=lei2 instance_name=lei2 SYSDBA_PWD=Dameng123 PORT_NUM=5237 CASE_SENSITIVE=N
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dmdba/data/lei2/lei201.log


 log file path: /dmdba/data/lei2/lei202.log

write to dir [/dmdba/data/lei2].
create dm database success. 2024-08-27 10:09:37

4. 测试CASE_SENSITIVE

4.1. 测试大小写敏感实例lei1

4.1.1. 测试表名

复制代码
[dmdba@lei3 ~]$ disql sysdba/Dameng123@192.168.0.3:5236

服务器[192.168.0.3:5236]:处于普通打开状态
登录使用时间 : 3.958(ms)
disql V8
SQL> select name,instance_name,status$ from v$instance;

行号     NAME INSTANCE_NAME STATUS$
---------- ---- ------------- -------
1          LEI1 LEI1          OPEN

已用时间: 0.789(毫秒). 执行号:64701.
SQL> select value,sys_value from v$parameter where name='GLOBAL_STR_CASE_SENSITIVE';

行号     VALUE SYS_VALUE
---------- ----- ---------
1          1     1

已用时间: 4.583(毫秒). 执行号:64702.
SQL> SELECT CASE_SENSITIVE();

行号     CASE_SENSITIVE()
---------- ----------------
1          1

已用时间: 0.626(毫秒). 执行号:64703.
SQL> CREATE TABLE lei(name varchar(10));
操作已执行
已用时间: 2.374(毫秒). 执行号:64704.
SQL> SELECT * FROM lei;
未选定行

已用时间: 0.741(毫秒). 执行号:64705.
SQL> SELECT * FROM LEI;
未选定行

已用时间: 0.562(毫秒). 执行号:64706.
SQL> SELECT * FROM "lei";
SELECT * FROM "lei";
第1 行附近出现错误[-2106]:无效的表或视图名[lei].
已用时间: 0.414(毫秒). 执行号:0.
SQL> SELECT * FROM "LEI";
未选定行

已用时间: 0.575(毫秒). 执行号:64707.

4.1.2. 测试表数据

复制代码
SQL> insert into lei values('a');
影响行数 1

已用时间: 0.817(毫秒). 执行号:64710.
SQL> commit;
操作已执行
已用时间: 0.725(毫秒). 执行号:64711.
SQL> insert into lei values('A');
影响行数 1

已用时间: 0.500(毫秒). 执行号:64712.
SQL> commit;
操作已执行
已用时间: 0.795(毫秒). 执行号:64713.
SQL> SELECT COUNT(*) FROM lei WHERE name='a';

行号     COUNT(*)            
---------- --------------------
1          1

已用时间: 0.874(毫秒). 执行号:64714.
SQL> SELECT COUNT(*) FROM lei WHERE name='A';

行号     COUNT(*)            
---------- --------------------
1          1

已用时间: 0.724(毫秒). 执行号:64715.
SQL> select * from lei;

行号     NAME
---------- ----
1          a
2          A

已用时间: 0.681(毫秒). 执行号:64716.

4.2. 测试大小写不敏感实例lei2

4.2.1. 测试表名

复制代码
[dmdba@lei3 ~]$ disql sysdba/Dameng123@192.168.0.3:5237

服务器[192.168.0.3:5237]:处于普通打开状态
登录使用时间 : 4.253(ms)
disql V8
SQL> select name,instance_name,status$ from v$instance;

行号     name instance_name status$
---------- ---- ------------- -------
1          LEI2 LEI2          OPEN

已用时间: 0.740(毫秒). 执行号:64701.
SQL> select value,sys_value from v$parameter where name='GLOBAL_STR_CASE_SENSITIVE';

行号     VALUE sys_value
---------- ----- ---------
1          0     0

已用时间: 4.941(毫秒). 执行号:64702.
SQL> SELECT CASE_SENSITIVE();

行号     CASE_SENSITIVE()
---------- ----------------
1          0

已用时间: 0.658(毫秒). 执行号:64703.
SQL> CREATE TABLE lei(name varchar(10));
操作已执行
已用时间: 2.445(毫秒). 执行号:64704.
SQL> SELECT * FROM lei;
未选定行

已用时间: 0.775(毫秒). 执行号:64705.
SQL> SELECT * FROM LEI;
未选定行

已用时间: 0.650(毫秒). 执行号:64707.
SQL> SELECT * FROM "lei";
未选定行

已用时间: 0.556(毫秒). 执行号:64708.
SQL> SELECT * FROM "LEI";
未选定行

已用时间: 0.266(毫秒). 执行号:64709.

4.2.2. 测试表数据

复制代码
SQL> insert into lei values('a');
影响行数 1

已用时间: 0.699(毫秒). 执行号:64710.
SQL> insert into lei values('A');
影响行数 1

已用时间: 0.476(毫秒). 执行号:64711.
SQL> commit;
操作已执行
已用时间: 0.687(毫秒). 执行号:64712.
SQL> SELECT COUNT(*) FROM lei WHERE name='a';

行号     COUNT(*)            
---------- --------------------
1          2

已用时间: 0.846(毫秒). 执行号:64713.
SQL> SELECT COUNT(*) FROM lei WHERE name='A';

行号     COUNT(*)            
---------- --------------------
1          2

已用时间: 0.869(毫秒). 执行号:64714.
SQL> select * from lei;

行号     name
---------- ----
1          a
2          A

已用时间: 0.661(毫秒). 执行号:64715.

5. 测试总结

1.DM数据库在默认情况下是大小写敏感的;

2.大小写不敏感的情况下,对表名称加不加双引号都可以,对查询没有影响;

3.大小写敏感的情况下,创建表名称不建议加上双引号,因为实际存储在字典中已全部转大写了,但是如果表名称里存在小写则必须加上双引号;

4.在大小写敏感情况下,是严格区分大小写的,在插入存在字母大小写的数据后,查询结果不受影响;

5.在大小写不敏感情况下,是不区分大小写的,在插入存在字母大小写的数据后查询结果会受到影响。
建议使用达梦数据库时候一定要选大小写敏感。

更多内容请参考:https://eco.dameng.com

相关推荐
python_chai几秒前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白26 分钟前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务28 分钟前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂4 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.5 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
薛晓刚7 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队8 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光8 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql
小楓12018 小时前
MySQL數據庫開發教學(一) 基本架構
数据库·后端·mysql
染落林间色8 小时前
达梦数据库-实时主备集群部署详解(附图文)手工搭建一主一备数据守护集群DW
数据库·sql