在sqlserver 中建了一张简单的表,有2列,
create table a
(col1 char(10) null,
 col2 varchar(10) null)
然后insert into a values (‘abc’,‘abc’)
最后再分别察看col1 和col2的列的长度,select col_length(‘a’,‘col1') select col_length(‘a’,‘col2'),为什么得到的长度都是10呢,varchar和char不是不一样吗?
望达人解惑!

解决方案 »

  1.   

    COL_LENGTH
    返回列的定义长度(以字节为单位),而不是里面数据的长度。--用len()函数
    select len(col1),len(col2) from a
      

  2.   

    wangtiecheng(不知不为过,不学就是错!) using len
      

  3.   

    顶一下.不过,按1楼的话,为什么换成VARCHAR 和 NVARCHAR 长度显示的就不一样了呢(SQL联机丛书)里就是这个例子,不是很明白,谁能告诉我吗?和楼主一起学习!
      

  4.   

    按照楼上各位的试了一下,用len()的话得到的结果都是3,而我又查了一下sqlserver的系统函数,好像可以用datalength(),得到的结果就是3,10,6(nvarchar)
    fire_qu(金迷之蓝色忧郁):
    nvarchar和varchar的区别是前者的字符是以2个字节存储,而varchar的字符仅仅以1个字节存储。