达梦数据库CASE

您所在的位置:网站首页 服务器与文件内数据的case_sensitive参数不匹配 达梦数据库CASE

达梦数据库CASE

2024-07-04 14:40| 来源: 网络整理| 查看: 265

文章目录 一、实验要求二、功能作用三、实验步骤1 初始化2 CASE_SENSITIVE状态为【开启】3 CASE_SENSITIVE状态为【关闭】

一、实验要求

深入理解CASE_SENSITIVE参数的作用,涉及大小写敏感的配置和差异

二、功能作用

CASE_SENSITIVE

功能:标识符大小写敏感。当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,系统比较函数会将大写字母全部转为小写字母再进行比较。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。缺省值为 Y。配置:dminit时指定。可选参数说明:此参数在数据库创建成功后无法修改,可通过系统函数 SF_GET_CASE_SENSITIVE_FLAG()或 CASE_SENSITIVE()查询设置的参数置。 三、实验步骤 1 初始化

分别初始化CASE_SENSITIVE状态为【开启】的数据库实例DB1,和状态为【关闭】的数据库实例DB2: DB1:

./dminit path=/dm8/data DB_NAME=db1 instance_name=db1 port_num=6001 case_sensitive=1

DB2:

./dminit path=/dm8/data DB_NAME=db2 instance_name=db2 port_num=6002 case_sensitive=0 2 CASE_SENSITIVE状态为【开启】 SQL> create table Table1(id int, "id1" int, "iD2" int); SQL> select TABLE_NAME FROM dba_tables where OWNER='SYSDBA'; SQL> desc Table1; SQL> create table TABLE1(id int, "id1" int, "iD2" int); SQL> create table table1(id int, "id1" int, "iD2" int); SQL> create table "TAble1"(id int, "id1" int, "iD2" int);

在这里插入图片描述 现象1:不加双引号的表明和列明是大写。说明开启大小写敏感时,创建的对象名会被默认转换为大写。 现象2:加了双引号的表名和列名不变。 结论:开启大小写敏感时,会把不加双引号的对象转换为大写,保持双引号内对象的大小写状态不变。所以不加双引号时,创建对象的字符串拼写相同,大小写不同的对象被认定为等同;但加上双引号之后,字符串拼写相同,大小写不同的对象被识别为不同对象。

3 CASE_SENSITIVE状态为【关闭】 SQL> create table Table1(id int); SQL> select TABLE_NAME FROM dba_tables where OWNER='SYSDBA'; SQL> desc Table1; SQL> create table "tAble1"(id int); SQL> create table TABLE1(id int);

在这里插入图片描述 现象:创建表名为Table1的表成功,且表名未做大小写转换;后续创建"tAble1"和TABLE1表均失败。原因是比较表名时,字符均被转换为小写字母来比较,所以显示表已存在。 结论:大小写敏感状态关闭时,由于比较时会转换为小写,故只要字符串拼写一样,无论大小写,对象均认为是等同的。

社区地址:https://eco.dameng.com



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3