
我的猜测:我看这些0很整齐,小数点后面0的位数是一样的,也就是说明这个0是自动补的,我也查了前面你的那个类似字段,也是小数点后14位(算上小数点后不是0的数字),那么也就是说个人觉得你的数据类型应该mysql的decimal类型,因为个人所知的数据库中只有这个(据说DB2上也有这个,不过我没用过不知道)。
也就是说你的数据类型是decimal(xx,14),那么就会出现这个情况,你可以用alter修改该字段的字段类型,update只能修改字段的值,是没办法修改字段的字段类型的。而且因为decimal(xx,14)这个字段属性的关系,不管你怎么update,最终都是这种情况。
用alter语句进行修改。语法:
alter table 表名 modify 字段名 字段类型(字段长度)说明:如果是date等没有长度的类型,字段长度部分可以省略。
如:目前test表属性如下
要将name列的字段类型改为date类型,可用如下语句:
alter table test modify name date此时可见name列的类型已经更新成功。
注意事项:
如果表中有数据尽量不要使用此语句,会造成数据丢失,应在备份的情况下进行修改。
SQL如何用语句更改字段可以用以下语句可以实现:
alter table 表名 alter column 字段名 变更后的字段类型。
注意:
但若是关键字段,带有主键,并且字段类型为用户自定义类型,具有默认值的情况下,用上述语句会出现错误。
例如:
现假设表为TABLE1,关键字段为FIELD1,主键为PK_FIELD1,关键字段的数据类型为用户自定义数据类型 cha_field1,实际为CHAR(10),默认值为dbo.D_field1现要求将字段类型改为 varchar(20),默认值去除错误提示如下:
服务器: 消息 5074,级别 16,状态 1,行 1
对象 'D_field1' 依赖于 列 'field1'。
服务器: 消息 5074,级别 16,状态 1,行 1
对象 'PK_field1' 依赖于 列 'field1'。
服务器: 消息 4922,级别 16,状态 1,行 1
ALTER TABLE ALTER COLUMN field1 失败,因为有一个或多个对象访问此列。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)