日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 數(shù)據(jù)庫 > Sqlserver > Sql server中Case when遇上null值

Sql server中Case when遇上null值

來源:程序員人生   發(fā)布時間:2013-11-15 09:39:25 閱讀次數(shù):4695次

利用存儲過程對表中記錄進行update,是很常見,也很容易的,但是如果更新的表有字段是允許null的、需要對是否為null做不同處理,同時該存儲過程的執(zhí)行命令是用sp_executesql,你會怎么處理呢,相信很多人第一時間想到的也是在update語句里用case when吧。如果你也是這樣想,并這么做的話,相信你肯定郁悶的發(fā)現(xiàn):

1、case when判斷null值,得到相反的結(jié)果,只有是常量值的情形,執(zhí)行時正常的;

2、sql server對拼接的字符串形式的sql語句中的錯誤,不提示錯誤信息,除了罷工;

case when的執(zhí)行結(jié)果跟我們預期的相反。請見如下腳本:

(另外發(fā)現(xiàn),sql server里對拼接得到的字符串sql語句里面的錯誤,不做如何報錯提示,僅僅是來個不理不問,無任何反映。此次case when不能正常執(zhí)行null值的情況,就是我一段一段拼接的sql字符串注釋后,檢測出來的,汗~~。在這提供一個可用的檢測語句print cash null when null then ‘null’ else ‘not null’ end)

--@Birthday=null

declare @sql nvarchar(2000)
declare @dbName nvarchar(50)

if exists(select 1 from syscfg where isTestDB='' or isTestDB is null)
begin
--live dataBase
set @dbName=’dbLive’
end
else
begin
--test dataBase
set @dbName='dbTest'
end

set @sql='update '+@dbName+'.dbo.PathologyHead set '
----patient部分
+' Birthday='+case @Birthday when null then 'null,' else ''''+cast(@Birthday as nvarchar(20))+''',' end
+' IsHKID='+case @IsHKID when 1 then '1' else '0' end+','
+' IDType='+cast(@IDType as nvarchar(5))
+' where LabNumber='''+@LabNumber+''''
--print @sql
exec sp_executesql @sql

上面的對字段IsHKID的執(zhí)行卻是正常的,難道case when是得對非null的值才行?我將@Birthday值的是否為null,移到前面判斷,執(zhí)行正常,修改后的如下:

set @Birthday=isnull(@Birthday,'1910-10-1') --移到下面的update中處理

set @sql='update '+@dbName+'.dbo.PathologyHead set '
----patient部分
+' Birthday='+case @Birthday when '1910-10-1' then 'null,' else ''''+cast(@Birthday as nvarchar(20))+''',' end
+' IsHKID='+case @IsHKID when 1 then '1' else '0' end+','
+' IDType='+cast(@IDType as nvarchar(5))
+' where LabNumber='''+@LabNumber+''''
--print @sql
exec sp_executesql @sql

轉(zhuǎn)自:http://www.cnblogs.com/hyqiang168/

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩三级一区 | 欧美 日韩 国产在线 | 91年国产电影大全免费观看 | 男女激情视频 | 日韩 国产 欧美 | 久久精品久久精品 | 中国一级特黄毛片大片 | 国产欧美精品在线 | 久久久久久久久久性 | 国产精品99久久免费观看 | 九九九在线 | 亚洲第一网站 | 国产经典一区二区三区 | 色综合国产 | 成人毛片在线播放器 | 欧美在线一区二区三区四区 | 香蕉久久精品 | 国产精品久久久久久久久久久久久 | 久久精品国产一区二区三区不卡 | 老色批av| 日韩午夜影院 | 91久久精品一区二区二区 | 精品一区二区三区免费毛片爱 | 亚洲精品视频免费 | 99久久九九 | 久久永久免费 | 国产资源在线观看 | 欧洲一区二区三区免费视频 | 亚洲日本欧美日韩高观看 | 性色av一区二区三区 | 国产黄色片在线观看 | 色综合亚洲 | 欧美午夜精品久久久久免费视 | 日韩av中文字幕在线 | 亚洲精品高潮呻吟久久av | 精品在线免费视频 | 欧美aa在线 | 久久国产精品免费一区二区三区 | 久久高清免费 | 麻豆av一区二区三区 | 久久久久久久国产精品影院 |