数据库char()定义

在sql server和oracle中,定义字段如果用到char(6),那括号中的6表示的是字节还是字符?看到很多地方讲的是表示字符,我认为不对啊!

  1、Char(n)是长度为n个字节的定长的非unicode的字符数据。N为一个介于1到8000之间的值。
  2、其存储大小为输入数据的实际字节长度,而不是n个字节。如果你输入的实际字节长度少于n,那么其他位置会被空格填充。在数据存储中英文字母和数字占一个字节,汉字占两个字节。
  3、那么char(n)最多可以存储n个英文字母或数字,或者n/2个汉字。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-09
从 SQL Server 联机丛书 查询的结果:

char [ ( n ) ]
固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。char 的 ISO 同义词为 character。

实际操作一下:
创建一个表, 2个字段, 一个 char(1) 一个 char(2)

1> create table #t( t1 char(1), t2 char(2) );
2> go
1> insert into #t(t1) values('男');
2> go
消息 8152,级别 16,状态 14,服务器 TESTPC\SQLEXPRESS,第 1 行
将截断字符串或二进制数据。
语句已终止。
1> insert into #t(t2) values('男');
2> go

(1 行受影响)1>
第2个回答  2013-01-09
2个字节一个汉字,比如“的”;
全角标点2个字节,半角标点一个字节
一个字母一个字节
字符指一个字母或一个字或一个标点或一个符号,不一定几个字节,看情况定
用字符不易出错.追问

如果字段限制为char(1),按你的理论,是不是可以把字符‘男’ 插进去?

追答

男女在数据库里一般用 1或0表示..或者真假..不直拦用 男,女...

追问

create table tb_test(
sex char(1)
)
insert into tb_test values('男'),这句能插进去么?

追答

可以的... oracle一般用varchar (2) ..

追问

不可以吧。 你去试试。

本回答被网友采纳
第3个回答  2013-01-09
应该是字节更精确一点,

如果是字符,基本上特指ansi字符。本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网