[MSSQL]MSSQL 基础之善用Char类型

转自:http://www.flybi.net/blog/lovezsr/2159
引言

今天为什么要开题来说Char类型呢?在近几天的社区问题中发现,有些朋友对char、varchar、nvarchar这几种字符类型的特性还不是很清楚。以至在实际的使用中,不可避免的产生了一些问题。

类型介绍

char类型

char(n)类型,长度是固定,索引效率高,n介于1-8000之间的数据。假设为char(10)的变量存储一个”abc”字符串,那么实际存储为abc+7个空字符。所以在使用时如果不希望有空字符可以使用Rtrim去掉空字符。

declare @content char(10)
select 1, @content,len(@content)
set @content = ‘abc’
select 2, @content,len(@content)
select 3, @content + ‘_end’
select 4, rtrim(@content)+’_end’

varchar类型

varchar(n)类型,可变长度,所谓可变长并不是真的可以任意变长,而是相对于char类型的固定占位而言,最大长度不能超出定义长度。n介于1-8000之间的数值。注意标红部分。

declare @content varchar(10)
select 1, @content,len(@content)
set @content = ‘abc’
select 2, @content,len(@content)
select 3, @content + ‘_end’
select 4, rtrim(@content)+’_end’
set @content = N’6급’
select 5, @content
[MSSQL]MSSQL 基础之善用Char类型_第1张图片

nvarchar类型

nvarchar(n)类型,可变长Unicode类型。一个字符使用两个字节存储,所以能够存储西方和特殊字符而不致产生乱码。n介于1-4000之间的数值。注意标红部分。

declare @content nvarchar(10)
select 1, @content,len(@content)
set @content = ‘abc’
select 2, @content,len(@content)
select 3, @content + ‘_end’
select 4, rtrim(@content)+’_end’
set @content = N’6급’
select 5, @content

[MSSQL]MSSQL 基础之善用Char类型_第2张图片
扩展

写了这么多都还没有点到题目,是不是楼主是个标题党哇。呵呵,各位看官居莫怪,其实如何善用char类型已经在类型介绍中说过了。既然char类型长度固定,而且索引效率高,那么作为编码字段还是非常有用的,强调一点是固定长度编码。如:性别字典表,char(2) 01 表示男 02 表示女,如国家字典,char(4) 0001表示中国,0002表示韩国。千万注意一定不要存储成1,2,前置的0是不可省略的。

你可能感兴趣的:([MSSQL]MSSQL 基础之善用Char类型)