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
新聞熱點
疑難解答