CREATE TABLE [dbo].[CharTest](
[Char] [char](10) NULL,
[Varchar] [varchar](10) NULL,
[Nchar] [nchar](10) NULL,
[Nvarchar] [nvarchar](10) NULL
)
insert into dbo.CharTest
( Char, Varchar, Nchar, Nvarchar )
values ( 'aa', -- Char - char(10)
'aa', -- Varchar - varchar(10)
N'aa', -- Nchar - nchar(10)
N'aa' -- Nvarchar - nvarchar(10)
)
--len(参数):可以获取参数的字符个数,与中英文无关
select LEN('aaa')
select LEN('中a国')
--datalength(参数):可以获取参数所占据的字节数(英文一个字节,中文两个字节)
select DATALENGTH('aaa')
select DATALENGTH('中国')
--char类型的特点:空间一旦分配,就不会再收缩回收,但是如果存储的内容走出指定的空间,那么就会报错--二进制截断的错误
--当你有内容长度变化不大的时候,使用char
select LEN(char) from chartest --2
select DATALENGTH(char) from chartest --10
--varchar:空间分配后,如果存储的内容小于指定的空间大小,那么多余的空间会自动回收,但是如果存储的内容走出指定的空间,那么就会报错--二进制截断的错误 如果内容的长度波动比较大,才会考虑使用varchar
select LEN(varchar) from chartest --2
select DATALENGTH(varchar) from chartest --2
--nchar: N:Unicode--unique code:唯一编码。每一种类型的字符都占据两个字节。 有中文的时候才会考虑使用unicode
select LEN(nchar) from chartest --2
select DATALENGTH(nchar) from chartest --20
--nvarchar:
select LEN(nvarchar) from chartest --2
select DATALENGTH(nvarchar) from chartest --4
欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果感觉对您有用,请点击推荐。您的支持,是我的动力!