参数一: NVARCHAR_LENGTH_IN_CHAR = 1 #Whether nvarchar convert to varchar(n char) 1:yes,0:no
参数二:length in char? ([Y]es, [N]o): n
请教下这两个参数是一个概念吗
两个参数不是同一个概念。 1、LENGTH_IN_CHAR是实例级参数,一经创建,整个实例生命周期不可更改。它是指varchar类型的长度是已字符为单位还是以字节为单位。 2、NVARCHAR_LENGTH_IN_CHAR,静态参数,可以更改,重启数据库实例即可生效。它指的是列定义中的 NVARCHAR 和 NVARCHAR2 数据类型是否自动转换为 VARCHAR(N CHAR)数据类型,即固定存储的字符数。
简单案例,在gbk字符集中:
union all SELECT '字符集',DECODE(SF_GET_UNICODE_FLAG(),'0','GB18030','1','UTF-8','2','EUC-KR'); -----GBK+字符为单位,理论一个汉字占2个字节 -----varchar(N)中是可以存储N个字节,而varchar(N char)是可以存储N个字符 drop table t1; create table t1(id varchar(10));--理论只能插入5个汉字 insert into t1 values('达梦数据库'); --插入成功 insert into t1 values('达梦数据库股'); 总共1个语句正依次执行... [执行语句1]: insert into t1 values('达梦数据库股'); 执行失败(语句1) -6169: 列[ID]长度超出定义 1条语句执行失败 drop table t1; create table t1(id varchar(10 char));--理论插入10个汉字 insert into t1 values('武汉达梦数据库股份有'); --插入成功 insert into t1 values('武汉达梦数据库股份有限'); 总共1个语句正依次执行... [执行语句1]: insert into t1 values('武汉达梦数据库股份有限'); 执行失败(语句1) -6169: 列[ID]长度超出定义 1条语句执行失败
两个参数不是同一个概念。


1、LENGTH_IN_CHAR是实例级参数,一经创建,整个实例生命周期不可更改。它是指varchar类型的长度是已字符为单位还是以字节为单位。
2、NVARCHAR_LENGTH_IN_CHAR,静态参数,可以更改,重启数据库实例即可生效。它指的是列定义中的 NVARCHAR 和 NVARCHAR2 数据类型是否自动转换为 VARCHAR(N CHAR)数据类型,即固定存储的字符数。
简单案例,在gbk字符集中: