sql server 2008环境中,字段为decimal(18,2),当输入为空时,会报错。

遇到一个问题,数据库为sqlserver2008环境中,字段为decimal(18,2),当输入为空时,会报错,错误信息为:从数据类型varchar转换为numeric时... 遇到一个问题,数据库为sql server 2008环境中,字段为decimal(18,2),当输入为空时,会报错,错误信息为:从数据类型 varchar 转换为 numeric 时出错。如果输入不为空,则可以正常通过,请各位能人高手支支招。 展开
 我来答
ttpsan520
2014-05-20 · TA获得超过404个赞
知道小有建树答主
回答量:312
采纳率:100%
帮助的人:313万
展开全部
首先 你要分清 null与输入为空的区别
null:表示未知值,没有值
你所说的输入为空值:其实已经有值了,值是一个空的字符串即‘’,‘’转化成数字类型当然会报错。

建议在程序的前端保存的时候做一个校验,如果输入的是‘’,则转化为null 或者0 来保存就好了。
建议楼主百度一下 null与‘’ 的区别
追问
谢谢~~~
你的意思是在C#里加一个判断:
if(a=="")
{
a == null;
}

但这里有个问题,我尝试把把此时的a赋值给decimal,却同样会出现这个报警信息。null貌似不能给decimal赋值吧?
追答
你在最后转化成的sql 语句 是有问题的
比如: UPDATE TABLEA SET COLS1='NULL'
和 UPDATE TABLEA SET COLS1=NULL
你最后的生成的sql语句肯定是 前者, 多了引号,有了引号就表示是字符串了,表示有值
你还是没有理解在sql中 空值与null的区别,建议你搜搜相关的资料
布萌布咕咕
2014-05-20 · 超过27用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:51.8万
展开全部
不能使用‘’(空),只能用0或者null值代替。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式