多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > Sqlserver > Sql server中Case when遇上null值

Sql server中Case when遇上null值

來源:程序員人生   發布時間:2013-11-15 09:39:25 閱讀次數:4688次

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

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

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

case when的執行結果跟我們預期的相反。請見如下腳本:

(另外發現,sql server里對拼接得到的字符串sql語句里面的錯誤,不做如何報錯提示,僅僅是來個不理不問,無任何反映。此次case when不能正常執行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的執行卻是正常的,難道case when是得對非null的值才行?我將@Birthday值的是否為null,移到前面判斷,執行正常,修改后的如下:

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

轉自:http://www.cnblogs.com/hyqiang168/

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩一区视频在线 | 激情综合婷婷丁香六月花 | 欧美黑人ⅹxxx片 | 亚洲欧美日韩不卡一区二区三区 | 一区二区三区中文 | 成人福利社区 | 成人淫片| 亚洲最大在线视频 | 国产精品国产亚洲精品不卡 | 亚洲精品www久久久久久久软件 | 性色综合| 欧美二区三区 | 中文字幕一区二区三区有限公司 | 性xxxxfreexxxxx欧美吹潮 | 中文字幕免费观看视频 | 久久精品这里有 | 亚洲精品国产不卡在线观看 | 日本免费不卡视频一区二区三区 | 欧美激情_区二区三区 | 老王午夜69精品影院 | 国产亚洲视频网站 | 国产亚洲欧美另类专区 | 欧美日本一道免费一区三区 | 亚洲国产精品第一区二区 | 91在线视频福利 | 韩国人hdxxxx美女 | 99热精品成人免费观看 | 手机看片日韩福利 | 亚洲欧美自拍一区 | 国产精品久久一区二区三区 | 另类亚洲孕妇分娩网址 | 2022国产成人精彩在线视频 | 成人欧美视频在线观看播放 | 国产精品第1页在线观看 | 中文字幕中文字幕在线 | 欧美video| 国产高清精品入口91 | 国产的一级毛片完整 | 偷自视频区视频真实在线 | 久久久影院亚洲精品 | 欧美专区亚洲专区 |