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类型的特点:空间一旦分配,就不会再收缩回收,但是如果存储的内容走出指定的空间,那么就会报错--二进制截断的错误--当你有内容长度变化不大的时候,使用charselect LEN(char) from chartest --2select DATALENGTH(char) from chartest --10--varchar:空间分配后,如果存储的内容小于指定的空间大小,那么多余的空间会自动回收,但是如果存储的内容走出指定的空间,那么就会报错--二进制截断的错误 如果内容的长度波动比较大,才会考虑使用varcharselect LEN(varchar) from chartest --2select DATALENGTH(varchar) from chartest --2--nchar: N:Unicode--unique code:唯一编码。每一种类型的字符都占据两个字节。 有中文的时候才会考虑使用unicodeselect LEN(nchar) from chartest --2select DATALENGTH(nchar) from chartest --20--nvarchar:select LEN(nvarchar) from chartest --2select DATALENGTH(nvarchar) from chartest --4
新闻热点
疑难解答