Sql中字段Char类型问题

kingjay 2004-05-02 12:08:15
比如用char数据类型设置长度为8,当我在里面存了2个字符,为什么取出来的时候会变成2个字符加上6个空格?何解?
...全文
88 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kingjay 2004-05-02
懂了。谢啦
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-02
char是定长的嘛,后面会自动加空格补齐.

  • 打赏
  • 举报
回复
tongtianming 2004-05-02
zheninchangjiang的代码是在数每种数据类型中内容的长度
datalength()是返回占用的字节数,len()是返回字节数
所以char占用8个,但是实际长度只有2个
  • 打赏
  • 举报
回复
zheninchangjiang 2004-05-02
你可以参考一下char和varchar的区别:
char[(n)]

长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。

varchar[(n)]

长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。

len函数:返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。

  • 打赏
  • 举报
回复
kingjay 2004-05-02
不明白你写的代码的意思
  • 打赏
  • 举报
回复
zheninchangjiang 2004-05-02
因为不是变长(VARCHAR),在存储时会有6个空格
declare @c char(8)
declare @vc varchar(8)
set @vc='21'
set @c='12'
select datalength(@c)
select len(@c)
select datalength(@vc)
select len(@vc)

结果如下:
-----------
8

(所影响的行数为 1 行)


-----------
2

(所影响的行数为 1 行)


-----------
2

(所影响的行数为 1 行)


-----------
2

(所影响的行数为 1 行)

  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-05-02 12:08
社区公告
暂无公告