Sql中字段Char类型问题

kingjay 2004-05-02 12:08:15
比如用char数据类型设置长度为8,当我在里面存了2个字符,为什么取出来的时候会变成2个字符加上6个空格?何解?
...全文
138 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 行)

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧