DM 参数CASE_SESITIVE &LENGTH_IN_CHAR&CHARSET

CASE_SENSITIVE 标识符大小写敏感。

当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;

当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。

取值:Y、y、1 表示敏感;N、n、0 表示不敏感。默认值为 Y。可选参数。

设置大小写不敏感CASE_SENSITIVE=0

创建一个表:

create table test1

(

C1 int not null,

C2 varchar2(5)

);

查看dba_tables中表名为小写

select * from dba_tables where owner='SYSDBA';

insert into test1 values(1,'AAA');

insert into TEST1 values(2,'bbb');

两条语句均能执行成功

添加一个栏位alter table test1 add(c3 varchar2(5)); 栏位名使用小写

默认查询出的栏位名为小写,使用大写的栏位名依然可查询,再次添加一个大写的C3栏位会提示失败

  

select * from test1;

select * from TEST1;

select * from "Test1";

三条条查询语句均能成功

  

因不区分大小写,所以test1& TEST1&"Test1"是同一个对象

使用小写字段值依然能查出该数据:

SELECT * FROM TEST1 WHERE C3='a';

初始化数据库设置大小写敏感(默认) CASE_SENSITIVE=1

创建如下表栏位c3为小写

create table test1

(

C1 int not null,

C2 varchar2(5),

c3 varchar2(5)

);

查看表名为大写

select * from dba_tables where owner='SYSDBA';

insert into test1 values(1,'AAA','A');

insert into TEST1 values(2,'bbb','b');

如下语句执行失败

insert into "Test1" values(3,'ccc','c');

如下语句执行失败

insert into "Test1" values(3,'ccc','c');

执行查询语句,可看到默认返回的栏位名均为大写

select * from TEST1;

大小写敏感时:表名、字段名均转换为大写存储,小写需要使用双引号””括起

查询时不使用双引号的表名字段名都会自动转换为大写,字段值的存储跟输入一致

大小写不敏感时:表名,字段名,字段值均与输入时一致,大小写均可访问

  • 字符集选项

CARSET/UNICODE_FLAG 字符集选项

取值:0代表GB18030,1代表UTF-8,2代表韩文字符集EUC-KR。默认为0。可选参数。

与此同时,CHARSET/UNICODE_FLAG为0和CASE_SENSITIVE为N/n/0 不能同时出现。

LENGTH_IN_CHAR

VARCHAR 类型对象的长度是否以字符为单位。

取值:1、Y 表示是,0、N 表示否。默认值为 0。可选参数。

1 或 Y:是,所有 VARCHAR 类型对象的长度以字符为单位。这种情况下,定义长度并非 真正按照字符长度调整,而是将存储长度值按照理论字符长度进行放大。所以会出现实际可插入字符数超过定义长度的情况,这种情况也是允许的。同时,存储的字节长度 8188 上限 仍然不变,也就是说,即使定义列长度为 8188 字符,其实际能插入的字符串占用总字节长度仍然不能超过 8188;

0 或 N:否,所有 VARCHAR 类型对象的长度以字节为单位

GB18030,CHARSET=0

一个汉字占用2个byte,一个英文占用1个byte

select  BIT_LENGTH('');

select  BIT_LENGTH('a');

  1. LENGTH_IN_CHAR=0 VARCHAR 类型对象的长度以字节为单位

创建一个表:

create table test1

(

C1 int not null,

C2 varchar2(5),

c3 varchar2(5)

);

插入数据:

insert into test1 values(1,'AAA','');

insert into TEST1 values(2,'bbb','');

insert into TEST1 values(4,'dddddd','四四');

insert into TEST1 values(5,'eeee','五五五');

数据插入失败,以字节为单位,超过长度定义5 byte:

  

  1. LENGTH_IN_CHAR=1 VARCHAR 类型对象的长度以字符为单位

create table Test1

(

C1 int not null,

C2 varchar2(5),

c3 varchar2(5)

);

插入数据:

insert into test1 values(1,'AAA','');

insert into TEST1 values(2,'bbb','');

表示可存储5个中文长度的字符串,英文字符可存储10个,中文字符5个

超过此长度报错

insert into TEST1 values(5,'eeeeeeeeee','五五五'); C2 10e成功

insert into TEST1 values(6,'ffffffffff','六六六六六');C3五个六成功

 

UTF-8,CHARSET=1

一个英文字符占用1个byte,一个中文字符占用3个byte

select  BIT_LENGTH('');

select  BIT_LENGTH('a');

  

LENGTH_IN_CHAR=0 VARCHAR 类型对象的长度以字节为单位

创建一个表

create table Test1

(

C1 int not null,

C2 varchar2(5),

c3 varchar2(5)

);

insert into test1 values(1,'AAAAA','一一'); '一一'长度6byte

insert into TEST1 values(2,'bbbbbb',''); 'bbbbbb'长度6byte

如下语句执行成功:

insert into test1 values(1,'AAAAA','');

insert into TEST1 values(2,'bbbbb','');

LENGTH_IN_CHAR=1 VARCHAR 类型对象的长度以字符为单位

创建如下表

create table Test1

(

C1 int not null,

C2 varchar2(3),

c3 varchar2(3)

);

varchar2(3)实际可存放中文字符3+1个即12byte

insert into test1 values(1,'AAAAAAAAAAAAA','');

insert into TEST1 values(2,'bbbbbbbbbbbb','二二二二二');

如下语句可执行成功:

insert into test1 values(1,'AAAAAAAAAAAA','');

insert into TEST1 values(2,'bbbbbbbbbbbb','二二二二');

EUC-KR,,CHARSET=2

一个中文字符 2 个 byte ,一个英文字符 1 个 byte

select  BIT_LENGTH('');

select  BIT_LENGTH('a');

LENGTH_IN_CHAR=0 VARCHAR 类型对象的长度以字节为单位

创建如下表:

create table Test1

(

C1 int not null,

C2 varchar2(3),

c3 varchar2(3)

);

长度超过 3 byte,无法插入

insert into test1 values(1,'AAAA','');

insert into TEST1 values(2,'bbb','二二');

  

执行如下语句成功插入

insert into test1 values(1,'AAA','');

insert into TEST1 values(2,'bbb','');

LENGTH_IN_CHAR=1 VARCHAR 类型对象的长度以字符为单位

创建表:

create table Test1

(

C1 int not null,

C2 varchar2(3),

c3 varchar2(3)

);

varchar2(3)表示3个字符,中文字符可以存储三个(6byte),英文字符可存储6个(6byte)

insert into test1 values(1,'AAAAAAA','');

insert into TEST1 values(2,'bbbbbb','二二二二');

  

如下SQL成功执行:

insert into test1 values(1,'AAAAAA','');

insert into TEST1 values(2,'bbbbbb','二二二');

CASE_SENSITIVE:

1大小写敏感时:表名、字段名均转换为大写存储,小写需要使用双引号””括起

查询时不使用双引号的表名字段名都会自动转换为大写,字段值的存储跟输入一致

0大小写不敏感时:表名,字段名,字段值均与输入时一致,大小写均可访问

CHARSET

0,GB18030:一个英文字符占用 1 byte,1 个中文字符占用 2 byte

1,UTF-8:一个英文字符占用 1 byte,1 个中文字符占用 3 byte

2,EUC-KR:一个英文字符占用 1 byte,1 个中文字符占用 2 byte

LENGTH_IN_CHAR决定varchar类型长度是以字节(0)还是字符(1)为单位

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心达梦数据库产品体验站,DM8在线试玩,达梦数据库全系列产品免费下载,官方权威的快速上手文档和产品手册,最活跃的达梦技术社区,面向全行业ISV厂商免费的云适配服务。icon-default.png?t=L892https://eco.dameng.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DHY151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值