SQL Sever中int和char(10)的区别。(运行myflexgrid中的某一栏中不显示数据)

     int和char是sql Sever中的两个数据类型,

      1、int、bigint、smallint 和 tinyint是使用整数数据的精确数字数据类型。
      2、主要类型、范围、存储体如下:
      1)bigint:从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据,存储 8 个字节。
      2)int:从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据。存储 4 个字节
      3)smallint:从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据,存储2 个字节。
      4)tinyint:从 0 到 255 的整型数据,存储 1 字节。

     char
    1)char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。
     nvarchar(n)
    2)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。       
    varchar[(n)]  
    3)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。

    4)由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

   在进行机房收费的“添加和删除用户板块”出现了这样一种情况。

密码和操作人两栏中没有信息,这个情况让我一脸懵,不知从何入手,看代码也没有什么问题,于是试着修改了一下这两个的数据类型,一开始sql表中这两个的数据类型是(char(10)),我试着将其修改为int数据类型,保存后运行,此时的结果如下:

       得到了想要的结果,但是不知是为什么会这样,因为同为参照的机房收费系统为什么可以使用,而我自己的却不能使用,是不是有地方还可已优化。

        于是网上搜索,搜到以下一句话:由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉! 

       于是试着修改代码如下:

也成功的实现了想要的结果。

猜你喜欢

转载自blog.csdn.net/weixin_43267344/article/details/86892651
今日推荐