打印本文 打印本文 关闭窗口 关闭窗口
char varchar 晕了。有范例!
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1335  更新时间:2009/4/22 23:09:13  文章录入:mintao  责任编辑:mintao

请大侠们帮忙看看,解释一下!!!如果方便,请提供关于char , varchar 类型在存储,取值,比较 等方面的总结性文字。谢谢!

=====================

drop table t5
go
create table t5 (c1 char(10),c2 varchar(10))
go
insert into t5 values ('1','1')
insert into t5 values ('2 ','2')
insert into t5 values ('3','3 ')
insert into t5 values ('4','4 4')


select char_length(c1),char_length(c2) from t5
/*
结果
前面两条记录结果10,1 结果符合char与varchar的定义,即存储的时候char自动补空格,varchar 不会自动补空格。
但是第三条记录竟然也返回10,1,不可思异!
*/


select * from t5
where c1 = c2

/*
结果
前三条记录都出来了,不可思异!
*/


declare @var1 varchar(20), @var2 varchar(20), @char char(20)
select @var1 = "abcd", @var2 = "abcd ", @char = "abcd"
select char_length(@var1), char_length(@var2), char_length(@char)

/*
执行结果为: 4,5,20
以上执行结果符合char与varchar的定义,即存储的时候char自动补空格,varchar 不会自动补空格。
对比上面,晕了!
*/

varchar类型的字段存到数据库里都会把尾部的空格去除的

declare @a varchar(20)
select @a = "abcd "
即使char_length(@a)显示是5个字节,但如果把@a存到varch(20)的表中它的长度就会变成4

 

 

打印本文 打印本文 关闭窗口 关闭窗口