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之类的函数把两边的空格去掉!
于是试着修改代码如下:
也成功的实现了想要的结果。