sqlserver数据库有个字段是int型,有条记录的该字段值为Null,怎样在Null值的基础上做+1操作

wuwenzhe 2011-10-13 10:10:19
sqlserver数据库有个字段是int型,有条记录的该字段值为Null.
如果该字段值为0,则可以进行+1操作,
如果该字段值为null,则无法进行+1操作,
所以我要做的是检查该字段值,如果是null值,则改为0,


try
{
if (Convert.ToInt32(该字段值) == 0)
{
return true;
}
else
{
return false;
}
}
catch
{
return false;
}




可是为什么这么写,当该字段为null值时,仍然检测不出来呢?
...全文
1190 点赞 收藏 47
写回复
47 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Arthur_G 2014-01-15
update 表明 set 字段名=1 where 字段名 is NULL Done.
回复
lingzengzhang 2013-04-21
很简单的问题啊,判断 if( reader.GetValue(reader.getOrdinal("名字"))==DBNull.Value) { 此值为空; } else { 不为空; }
回复
wuwenzhe 2011-10-13
[Quote=引用 38 楼 gxttr 的回复:]
判断??前面的值是不是null,是null就返回??后面的结果,如果不是null就返回val的值
所以如果val是1,2,3 这种数字,result就是原来的值加1
如果val是null,result就是0+1,也就是1
[/Quote]
对于从数据库中取出的字段值,不好使啊。我试过了。
回复
wuwenzhe 2011-10-13
[Quote=引用 39 楼 feng1366259807 的回复:]
为什么 不把字段默认等于0 那样就少了很多的问题啊
数据库判断 NULL 写法判断是否为空 是 (字段 is NULL)
如果在.cs代码里面叠加 判断字段值是否==null 不是 Convert.ToInt32(该字段值)+1 不就可以了么
是的话 处理之后再判断
如果是null Convert.ToInt32(该字段值) 这种转化会报错的
[/Quote]

Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。
回复
风2013 2011-10-13
为什么 不把字段默认等于0 那样就少了很多的问题啊
数据库判断 NULL 写法判断是否为空 是 (字段 is NULL)
如果在.cs代码里面叠加 判断字段值是否==null 不是 Convert.ToInt32(该字段值)+1 不就可以了么
是的话 处理之后再判断
如果是null Convert.ToInt32(该字段值) 这种转化会报错的
回复
遥望那些年 2011-10-13
判断??前面的值是不是null,是null就返回??后面的结果,如果不是null就返回val的值
所以如果val是1,2,3 这种数字,result就是原来的值加1
如果val是null,result就是0+1,也就是1
回复
wuwenzhe 2011-10-13
[Quote=引用 13 楼 gxttr 的回复:]
int? 表示可空int型,可以保存null和int的值


C# code


int? val=你数据库取到的值;
int result= val??0 +1;
[/Quote]

val??0 +1;

这句话什么意思?
回复
回复
wuwenzhe 2011-10-13
[Quote=引用 18 楼 hhqsy 的回复:]
SQL code



update tablename set 字段1=0 where isnull(字段1,-1)=-1 and 条件=老商品
[/Quote]

正确答案,还有很多方法
回复
wuwenzhe 2011-10-13
[Quote=引用 31 楼 pittroll 的回复:]
引用 24 楼 wuwenzhe 的回复:
引用 18 楼 hhqsy 的回复:
SQL code



update tablename set 字段1=0 where isnull(字段1,-1)=-1 and 条件=老商品


isnull(字段1,-1)=-1 这句话什么意思?

update tablename set 字段1=0 where 字段1 is null……
[/Quote]

你这个方法ok了,多谢
回复
wuwenzhe 2011-10-13
[Quote=引用 26 楼 liukaizxc 的回复:]
这样写就行了
你要这样判断才行
if(读取的int字段值!=DBNull.Value)
{
该字段值=0
再进行+1操作,

}
else
{
进行+1操作
}
最后更新数据库

这段完全可以满足你的需要啊.......
以前老商品字段为null的 全都可以变成0啊
[/Quote]
我用的是ibatis,取出来的字段值无法和DBNull.Value做比较
回复
chen_ya_ping 2011-10-13
这个null变0的事情,应该是是插入数据库的时候弄的。或者给个默认值0
回复
PitTroll 2011-10-13
[Quote=引用 24 楼 wuwenzhe 的回复:]
引用 18 楼 hhqsy 的回复:
SQL code



update tablename set 字段1=0 where isnull(字段1,-1)=-1 and 条件=老商品


isnull(字段1,-1)=-1 这句话什么意思?
[/Quote]
update tablename set 字段1=0 where 字段1 is null and 条件=老商品
这不就行了
回复
llyfe2006 2011-10-13
直接写SQL语句完成不行吗?
select IsNull(col,0)+1 as col from tb
回复
[Quote=引用 28 楼 caogongze 的回复:]
为了那可怜的十分 我也得回帖
[/Quote]
回复
caogongze 2011-10-13
为了那可怜的十分 我也得回帖
回复
where isnull(字段1,-1)=-1 and 条件=老商品


这样你就可以定位找到表中字段1为null的老商品的记录了
回复
liukaizxc 2011-10-13
这样写就行了
你要这样判断才行
if(读取的int字段值!=DBNull.Value)
{
该字段值=0
再进行+1操作,

}
else
{
进行+1操作
}
最后更新数据库

这段完全可以满足你的需要啊.......
以前老商品字段为null的 全都可以变成0啊
回复
查询条件: 当字段1为null时,isnull(字段1,-1)=-1是成立的,你也可以isnull(字段1,123)=123,随便写啊
回复
wuwenzhe 2011-10-13
[Quote=引用 18 楼 hhqsy 的回复:]
SQL code



update tablename set 字段1=0 where isnull(字段1,-1)=-1 and 条件=老商品
[/Quote]

isnull(字段1,-1)=-1 这句话什么意思?
回复
加载更多回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2011-10-13 10:10
社区公告
暂无公告