none
varchar(50)、int(4)这些类型长度是指数据的长度还是什么?怎么和实际数据的不太符合 RRS feed

  • 问题

  • int类型默认是长度是4

    但我试了 输入10位 才限制了输入

    2000li好象是9位

    而VARCHAR我刚试了限制为4 却可以输入8个数字 4个中文

    我设置varchar类型时 也总是不确定他是字符的长度还是什么

    另外主键是int类型 当长度大于4时 该怎么办?

    2009年1月17日 11:03

答案

全部回复

  •  

    4指的是存储大小为 4 个字节,实际可以表示的范围是:

    int

    从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。

    2009年1月17日 11:58
  • int类型的存储长度是4个字节,保存数据范围为2的32次方-2147483648~2147483648,所以你保存11位系统报错。
    Varchar是
    可变长度非 Unicode 字符数据。存储大小是输入数据的实际长度加 2 个字节。最大长度为8000
    Int类型做主键需要注意表的最大数据行不能超21亿,当然一般不会有这么大的表,因为那样会导致查询效率会很差。
    2009年1月17日 12:05
  • Table with more than 2 billion rows is normal in data warehouse, we have fact tables much bigger than that.

     

    2009年1月17日 23:14
  •  rmiao 写:
    Table with more than 2 billion rows is normal in data warehouse, we have fact tables much bigger than that.

     

    那你们是怎么办的?

    2009年1月19日 12:16
  • 范围和存储字节不一样吧?

    既然这样那int类型应该最大只能存储9999以下的数据 也就是4位

    2009年1月19日 12:27
  •  

    范围和存储字节不一样吧?

    既然这样那int类型应该最大只能存储9999以下的数据 也就是4位

    2009年1月19日 12:30
  •  singledark 写:

     

    范围和存储字节不一样吧?

    既然这样那int类型应该最大只能存储9999以下的数据 也就是4位

     

    楼主看联机类型说明;想入门和提高要习惯多看联机帮助。不看只会用猜是不会进步的

    2009年1月19日 13:51
    版主
  • Length of int is 4 bytes, that's 4 x 8 binary bit or 2^31-1 in decimal.

     

    2009年1月19日 19:10
  • 存储长度和显示长度是两个不同的概念,存储是二进制位的

    int 类型的 10,如果你把它用二进制位表示,只需要1个字节表示就好了(存储的最小单位是字节)

    而对于显示来说,是两位,因为你是把它当字符看待的

    2009年1月19日 21:19
  • 我知道字节和位是不一样的
    我只是想知道int类型默认是4个字节
    但为什么我可以输入10个字节
    这和他们显示的字节长度不一致

    联机帮助内也并没有说明为什么默认是4字节却能保存10位的长度
    10位大于4字节 这远远超过了默认长度

    2009年1月24日 7:20
  • 你怎么还不明白呢?我给你换算一下吧。4个字节就是32bit,计算机中都是用二进制表示的。所以32bit最大可以表示为

    11111111111111111111111111111111,换成十进制就是4294967295,int是带符号整形,所以可以表示的范围为

    -2147483648~2147483647。

    2009年1月24日 12:18
  • int(4)应该是指数字串的长度,理论上是9999最大。不知道mssql是不是这样规定的。
    七月十五
    2009年2月4日 8:48
  • 哪个4不是字符长度

    而是存储字节 因为他是数字 而不是字符

    4个字节=32位 所以就成立了

    其他类型的比如varchar应该是长度 存储空间大小是实际字节+2

    这样意思不统一 不能明确表示意义 才是我发帖的原因

    另外 这个问题是MSDN的问题

    如果varchar(50)

    存储“我爱你”

    按照官方说明实际大小应该为3(长度)+2

    除非这之间存在长度转字节而官方并没有说明

    可3个中文应该是6字节 

    2009年2月4日 9:57
  • Sql doesn't store unicode characters in non-unicode column like varchar with two bytes.
    2009年2月4日 16:05