中易网

T-SQL中向表中插入一条数据,其中类型为Decimal的列对应的插入值为‘2400’可就是不行还报“......

答案:3  悬赏:0  
解决时间 2021-01-17 23:12
  • 提问者网友:人傍凄凉立暮秋
  • 2021-01-17 00:51
T-SQL中向表中插入一条数据,其中类型为Decimal的列对应的插入值为‘2400’可就是不行还报“......
最佳答案
  • 二级知识专家网友:山河有幸埋战骨
  • 2021-01-17 01:24
如果的确是这个字段被截断,那么你就要看一下你定义的DECIMAL类型变量的精度和小数位数。
DECLMAL(5,1)或DECIMAL(4,0)输入2400就不会被截断。
其中括号中第一个数字是十进制位数(包括小数位),第二个是小数位数。
你要是DECIMAL(5,2)这样只存存储三位整数和两位小数,你的数据就会被截断
一般定议:DECIMAL(12,4)就能够满足大多数要求追问
大神,求解?

追答问题在你的VARCHAR类型的几个字段,没有定义长度,而默认长度为1,就是说明超过一个字就不行了。
就是TOPIC VARCHAR NOT NULL

和CONTENTS VARCHAR NOT NULL
写成
TOPIC VARCHAr(100) NOT NULL

CONTENTS VARCHAr(100) NOT NULL
就行了。

你那个PRICE字段精度是9,小数位是2,最大可以写到9999999.99是没问题的。
所以,你应该检查一下是不是由于其它字段造成的追问嗯嗯,varchar忘了给长度啦默认为1啦,是吖谢谢哈
全部回答
  • 1楼网友:大漠
  • 2021-01-17 03:09
不是这个字段的原因
看看其他字段追问

改了怎么还不行呐,唉求解
追答Topic,Contents,怎么不定义长度?
你试试
insert into HOS_HOUSE(UID,HID,HTID,Price,topic,contents,HTIME,COPY) values(1,1,2,2400,'','',getdate(),'')
肯定不会出错
兄弟,别用外键哦,这个会很麻烦的,尤其是你系统有点复杂的话追问o(︶︿︶)o 唉,又马虎啦,竟然忘定义长度了,谢谢啦!!!(*^__^*) 嘻嘻
  • 2楼网友:撞了怀
  • 2021-01-17 01:31

我这没问题的,你看下你设置的长度

 
9,2代表9位有效数字,小数点后2位追问

唉,搞不懂耶╮(╯▽╰)╭追答
我拿你的表试试,等一下
--------------补充------------
你好几个varchar没设置长度,默认长度就是1了
这样一下
运行一下这两句alter table hos_house alter column topic varchar(50)
alter table hos_house alter column contents varchar(50)追问是丫明白啦谢谢啦,亲(*^__^*) 嘻嘻
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息