SQL中,update table1 set table1.A=1 from table1 where isnull(table1.A,2) = 0,这句能执行成功吗?

当table1.A为何值时能成功执行?... 当table1.A为何值时能成功执行? 展开
 我来答
amyasp
2011-12-02 · TA获得超过118个赞
知道小有建树答主
回答量:327
采纳率:0%
帮助的人:211万
展开全部
这个,什么时候都是不执行的
关键在于isnull(table1.A,2)
ISNULL 就是table1.A为NULL 时, 取值是1,当不为空时,取值就是2了,1或2不可能等于0 。

呵呵,这问题有点绕
追问
没事儿,有点绕我也理解了,非常感谢!只是为什么当A为空值时A的取值,你跟楼上说的不一样??
追答
我错了,没细看

declare @c varchar(12)
declare @d varchar(12)
declare @e varchar(12)
set @d='hehe'
set @e='0'
select top 1 isnull(@c,2),isnull(@d,2) ,isnull(@e,2) from sysobjects where isnull(@e,2)=0
这个是成立的

create table #t1 (A int )
insert into #t1 (A) values(1)
insert into #t1 (A) values(2)
insert into #t1 (A) values(3)
insert into #t1 (A) values(0)
update #t1 set #t1.A=1 from #t1 where isnull(#t1.A,2) = 0
select * from #t1
drop table #t1

当A为0时,会将A更新为1
下次一定要细看看

你的语句应该相当于
update table1 set table1.A=1 from table1 where table1.A = 0
皑你依笙
2011-12-01 · 超过13用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:34.5万
展开全部
ISNULL这个函数是用来检查指定字段是否为null,然后用后面的变量代替这个null值
你的 isnull(table1.A,2) 的意思是如果A字段为null,那么A的默认值设为2,所以你的不对呀。。。.
你要执行什么语句,说来看看?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laosong2008
2011-12-01 · TA获得超过159个赞
知道小有建树答主
回答量:283
采纳率:0%
帮助的人:244万
展开全部
update table1
set A=1
where a IS NOT NULL
AND a=0
--这样写不好吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式