什么是字段长度值
发布网友
发布时间:2022-05-10 22:21
我来回答
共1个回答
热心网友
时间:2023-11-07 20:05
char [ ( n ) ]
固定长度字符数据类型,非Unicode字符数据,长度为n个字节。
n 的取值范围为 1至 8,000,存储大小是n个字节。如果输入的
字符串长度不足N 则在右边用空格补足.
例:
declare @str char(5)
set @str='ab'
select @str
select DATALENGTH(@str)
/*
ab(三个空格)
----------------------
5
*/
varchar [ ( n | max ) ]
可变长度的字符数据类型,非Unicode字符数据。n的取值范围为
1 至 8,000或者max,max指示最大存储大小是 2^31-1(2^31为的次方)个字节。
存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符。
例:
declare @str varchar(5)
set @str='ab'
select @str
select DATALENGTH(@str)
/*
ab(没有空格)
----------------------
2
*/
如果未在数据定义或变量声明语句中指定 n,则默认长度为 1。
如果在使用 CAST 和 CONVERT函数时未指定n,则默认长度为 30。
将为使用 char或varchar 的对象指派数据库的默认排序规则,
除非使用 COLLATE子句指派了特定的排序规则。
该排序规则控制用于存储字符数据的代码页。
如果站点支持多语言,请考虑使用Unicodenchar 或 nvarchar 数据类型,
以最大限度地消除字符转换问题。如果使用char或 varchar,建议执行以下操作:
如果列数据项的大小一致,则使用char。
如果列数据项的大小差异相当大,则使用varchar。
如果列数据项大小相差很大,而且大小可能超过 8,000字节,请使用varchar(max)。
当执行 CREATETABLE或 ALTER TABLE 时,如果SETANSI_PADDING 为 OFF,则定义为NULL的 char 列将作为 varchar处理。
当排序规则代码页使用双字节字符时,存储大小仍然为n个字节。根据字符串的不同,n个字节的存储大小可能小于n 个字符。
字符数据类型(nchar长度固定,nvarchar长度可变)和 Unicode数据使用 UNICODEUCS-2字符集。
nchar [ ( n ) ]
n 个字符的固定长度的Unicode字符数据。n值必须在 1到 4,000之间(含)。
存储大小为两倍 n 字节。
例:
declare @str1 nchar(5)
set @str1='ab'
select @str1
select DATALENGTH(@str1)
/*
ab(三个空格)
---------------
10
*/
declare @str2 nchar(5)
set @str2='我爱你小三'
select @str2
select DATALENGTH(@str2)
/*
我爱你小三
------------------
10
*/
nvarchar [ ( n | max ) ]
可变长度 Unicode 字符数据。n值在 1到 4,000之间(含)。
max 指示最大存储大小为 2^31-1字节。存储大小是所输入字符个数的两倍+ 2 个字节。
所输入数据的长度可以为 0 个字符。
例:
declare @str1 nvarchar(5)
set @str1='ab'
select @str1
select DATALENGTH(@str1)
/*
ab(无空格)
---------------
4
*/
declare @str2 nvarchar(5)
set @str2='我爱你小三'
select @str2
select DATALENGTH(@str2)
/*
我爱你刘桦
------------------
10
*/
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用CAST函数指定 n,则默认长度为 30。
如果列数据项的大小可能相同,请使用nchar。
如果列数据项的大小可能差异很大,请使用nvarchar。
sysname 是系统提供的用户定义数据类型,除了不可为空值外,
在功能上与 nvarchar(128)相同。sysname用于引用数据库对象名。
为使用 nchar或nvarchar 的对象分配的是默认的数据库排序规则,
但可使用 COLLATE子句分配特定的排序规则。
SET ANSI_PADDINGON永远适用于 nchar 和 nvarchar。SETANSI_PADDINGOFF不适用于 nchar 或nvarchar 数据类型。