character_maximum_length 和 character_octet_length 的区别

Mis*_*sky 4 sql-server t-sql information-schema

也许在某处有一个答案,但是,我在谷歌上找不到任何有效的答案,因此,我会在这里问这个。

我想动态地获取一些关于我的存储过程参数的信息,所以我写了这个脚本:

SELECT  PARAMETER_NAME,
        DATA_TYPE,
        CHARACTER_MAXIMUM_LENGTH,
        CHARACTER_OCTET_LENGTH
FROM    INFORMATION_SCHEMA.PARAMETERS
WHERE   SPECIFIC_NAME = @ProcName
Run Code Online (Sandbox Code Playgroud)

问题是 CHARACTER_MAXIMUM_LENGTH 和 CHARACTER_OCTET_LENGTH 之间的区别是什么。你能举个例子说明他们什么时候会有不同的结果吗?

在此处输入图片说明

提前致谢。

Pie*_*ens 9

MSDN 文档中所述,CHARACTER_OCTET_LENGTH 是字节长度,CHARACTER_MAXIMUM_LENGTH 是字符长度。

对于charvarchar类型的参数,它们将相同,但对于ncharnvarchar类型的参数,它们将不同,OCTET-LENGTH 是 CHARACTER_LENGTH 的两倍(如果不总是)。