达梦数据库CASE_SENSITIVE大小写敏感差异比较

达梦数据库CASE_SENSITIVE大小写敏感差异比较

  • [1 是否敏感环境确认](#1 是否敏感环境确认)
  • [2 数据存储比较](#2 数据存储比较)
  • [3 查询结果集比较](#3 查询结果集比较)
  • [4 数据排序比较](#4 数据排序比较)
  • [5 表名的差异](#5 表名的差异)
  • [6 列名的差异](#6 列名的差异)
  • [7 索引名的差异](#7 索引名的差异)
  • [8 表空间名差异](#8 表空间名差异)

CASE_SENSITIVE参数不同,对表数据底层存储无影响(内部存储字节均相同),对表结构、表空间名、查询结果集和默认排序有影响。1)表结构(表名、列名、索引名)和表空间层面:大小写敏感转化为大写存储;大小写不敏感按照书写大小写存储。2)查询结果集层面:大小写敏感严格按照字符大小写比较;大小写不敏感会同时匹配大小写字母(先转换小写在比较)。3)默认排序层面:大小写敏感按照底层字符编码顺序进行排序;大小写不敏感按照字符顺序进行排序(大小写先后位置不确定)。
下方截图说明:左边窗口大小写敏感,右边窗口不敏感。

1 是否敏感环境确认

bash 复制代码
SQL> select CASE_SENSITIVE();
SQL> select SF_GET_CASE_SENSITIVE_FLAG();

返回值:1代表敏感;0代表不敏感。会话级别查询函数SESS_CASE_SENSITIVE()在该版本中已不可用。

2 数据存储比较

通过数据库内部dump函数可以获取内部存储字节。在两个环境内底层数据存储相同。表数据16进制ASCII具体如下:

bash 复制代码
SQL> select dump(C,1016) dump_char,C from TEST;

3 查询结果集比较

通过where c='A'对表结果数据过滤,两者返回的结果集不同。敏感数据返回1条数据A;非敏感数据库返回2条结果集A和a。

4 数据排序比较

是否敏感对数据默认排序(也可以通过NLSSORT指定排序规则)有影响。默认排序差别如下:

敏感:按照底层字符编码顺序进行排序。

不敏感:按照字符顺序进行排序。大小写先后位置不确定。

5 表名的差异

敏感:不论建表时表名是大写还是小写,表名均是以大写存储。

不敏感:表名不做处理,按照创建时的大小写存储。

测试内容:

大小写敏感的不敏感的数据库,分别执行以下语句。

bash 复制代码
SQL> CREATE TABLE TEST(C VARCHAR);
SQL> CREATE TABLE test2(C VARCHAR);
SQL> CREATE TABLE Test3(C VARCHAR);

观察dba_objects对象差异。

bash 复制代码
SQL> select owner,object_name from dba_objects where object_name like 'TEST%';

6 列名的差异

敏感:不论建表时列名是大写还是小写,列名均是以大写存储。

不敏感:列名不做处理,按照创建时的大小写存储。

测试内容:

大小写敏感的不敏感的数据库,分别执行以下语句。

bash 复制代码
SQL> CREATE TABLE TEST(C VARCHAR);
SQL> CREATE TABLE TEST4(c VARCHAR);

观察dba_col_comments对象差异。

bash 复制代码
SQL> select * from SYS.DBA_COL_COMMENTS where TABLE_NAME in ('TEST','TEST4');

7 索引名的差异

敏感:不论创建索引时索引名是大写还是小写,索引名均是以大写存储。

不敏感:索引名不做处理,按照创建时的大小写存储。

测试内容:

大小写敏感的不敏感的数据库,分别执行以下语句。

bash 复制代码
SQL> CREATE INDEX Idx_Test_C ON TEST(C);

观察dba_indexes对象差异。

bash 复制代码
SQL> select INDEX_NAME from SYS.DBA_INDEXES where TABLE_NAME='TEST';

8 表空间名差异

敏感:不论创建表空间时表空间名是大写还是小写,表空间名均是以大写存储。

不敏感:表空间名不做处理,按照创建时的大小写存储。

测试内容:

大小写敏感的不敏感的数据库,分别执行以下语句。

bash 复制代码
SQL> create tablespace Ts_Test_Data datafile 'Ts_Test_Data01.dbf' size 128;

观察V$TABLESPACE对象差异。

bash 复制代码
SQL> select NAME from SYS."V$TABLESPACE" order by id desc;
相关推荐
睡不醒男孩03082320 小时前
PostgreSQL 数据库运维转型:从传统模式到 CLup 平台的 25 个核心 FAQ
运维·数据库·postgresql
凡人叶枫20 小时前
Effective C++ 条款40:明智而审慎地使用多重继承
java·数据库·c++·嵌入式开发·effective c++
至此流年莫相忘20 小时前
Spring 依赖注入三剑客:@Autowired、@Resource 与 @RequiredArgsConstructor 深度对比与实战指南
java·数据库·spring
Rain50920 小时前
2.2 数据基础:数据库集成与 ORM(TypeORM / Prisma)
数据库·人工智能·ai·数据分析·node.js·自动化·ai编程
杨云龙UP21 小时前
Oracle/ODA RAC /u01 空间告警处理指南:grid 用户监听日志清理_2026-06-15
linux·数据库·oracle·oracle linux·oda·监听日志·在线清理
IT新视界21 小时前
从多平台割裂到湖仓集一体,星环科技ArgoDB助力金融机构迈向实时智能
数据库·科技
master33621 小时前
达梦数据库常用语句示例
数据库·达梦
Elastic 中国社区官方博客21 小时前
Elasticsearch:使用向量搜索构建现代应用的最佳实践
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Volunteer Technology21 小时前
Flink状态管理与容错(一)
大数据·数据库·flink
CIO_Alliance21 小时前
(企业AI化转型)选对iPaaS系统集成厂家是制造业数字化转型的生死线
大数据·数据库·人工智能·企业数字化转型·ipaas·系统集成