这是由于sqlserver 执行隐式数据类型转换造成的。因为插入的是数字型字符串,所以sql就自动将其转化成数值33并插入到数字字段中。若插入的是非数字字符串,sql肯定会报错。
创新互联主营威宁网站建设的网络公司,主营网站建设方案,app软件开发,威宁h5小程序定制开发搭建,威宁网站营销推广欢迎威宁等地区企业咨询
SQL语句:Alter table [表名] Alter column [列名] [列类型]
也可选中表后右键选设计,然后修改字段类型后保存就行
--先保证所有列为整型
update 你的表 set 你的列=null where isnumeric(你的列)=0 or charindex('.',你的列)0
--直接更新为整型
alter table 你的表 alter column 你的列 int;
应为浮点数的精度比整数高 java不允许由小到高传递(强制转化要丢失部分数据) 所以由题看 在sql里我认为全换成float好点
sqlserver语句添加列步骤如下:
1、首先我们准备一个数据表,接下来将会在这个表中添加列。
2、然后我们通过alter table语句来给表添加一个列。
3、回到数据表一会我们看到列已经被添加进数据表了。
4、接下来我们在添加列的时候同时添加上默认值,这个时候运用default关键字。
5、然后回到数据表,我们就看到默认值有内容了。
6、另外在数据表中经常使用的是uniqueidentifier类型,这种字段设置默认值。
7、回到数据表中我们可以看到默认值已经添加上了。
sqlserver的数据类型比较多,常用的包括:
第一大类:整数数据
bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.
int:以4个字节来存储正负数.可存储范围为:-2^31至2^31-1.
smallint:以2个字节来存储正负数.存储范围为:-2^15至2^15-1
tinyint: 是最小的整数类型,仅用1字节,范围:0至此^8-1
第二大类:精确数值数据
numeric:表示的数字可以达到38位,存储数据时所用的字节数目会随着使用权用位数的多少变化.
decimal:和numeric差不多
第三大类:近似浮点数值数据
float:用8个字节来存储数据.最多可为53位.范围为:-1.79E+308至1.79E+308.
real:位数为24,用4个字节,数字范围:-3.04E+38至3.04E+38
第四大类:日期时间数据
datatime:表示时间范围可以表示从1753/1/1至9999/12/31,时间可以表示到3.33/1000秒.使用8个字节.
smalldatetime:表示时间范围可以表示从1900/1/1至2079/12/31.使用4个字节.
第五大类:字符串数据
char:长度是设定的,最短为1字节,最长为8000个字节.不足的长度会用空白补上.
varchar:长度也是设定的,最短为1字节,最长为8000个字节,尾部的空白会去掉.
text:长宽也是设定的,最长可以存放2G的数据.
第六大类:Unincode字符串数据
nchar:长度是设定的,最短为1字节,最长为4000个字节.不足的长度会用空白补上.储存一个字符需要2个字节.
nvarchar:长度是设定的,最短为1字节,最长为4000个字节.尾部的空白会去掉.储存一个字符需要2个字节.
ntext:长度是设定的,最短为1字节,最长为2G.尾部的空白会去掉,储存一个字符需要2个字节.
第七大类:货币数据类型
money:记录金额范围为:-92233720368577.5808至92233720368577.5807.需要8 个字节.
smallmoney:记录金额范围为:-214748.3648至214748.36487.需要4个字节.
第八大类:标记数据
timestamp:该数据类型在每一个表中是唯一的!当表中的一个记录更改时,该记录的timestamp字段会自动更新.
uniqueidentifier:用于识别数据库里面许多个表的唯一一个记录.
第九大类:二进制码字符串数据
binary:固定长度的二进制码字符串字段,最短为1,最长为8000.
varbinary:与binary差异为数据尾部是00时,varbinary会将其去掉
image:为可变长度的二进制码字符串,最长2G.