SQL?Server?ISNULL?不生效原因及解決
SQL Server ISNULL 不生效原因
數(shù)據(jù)庫(kù):SQL Server 2008 R2
原始SQL:historyval 字段沒有數(shù)據(jù)顯示為NULL,用ISNULL判斷為NULL的時(shí)候替換為 0.0
SELECT ?? ?ISNULL(historyval, 0.0) FROM ?? ?ce_bf_l_energyh_t_2 WHERE ?? ?tagname = '123'
問題
用ISNULL只后數(shù)據(jù)依舊為NULL并沒有替換掉。
原因
ISNULL只作用于查詢出數(shù)據(jù)后字段為NULL可以替換生效、如果查詢的時(shí)候這條數(shù)據(jù)本身為NULL、字段替換時(shí)ISNULL則不生效。
解決方法
先用 if exists(結(jié)果集)判斷這條數(shù)據(jù)是否存在(也就是說這條select這條sql有沒有結(jié)果集),BEGIN 表示語句塊的開始;END 表示語句塊的結(jié)束(加不加 BEGIN END 代碼塊都可以)。
如果滿足條件直接在下方寫 SQL。
不滿足條件時(shí),則在 ELSE 下方寫 SQL。如此,數(shù)據(jù)進(jìn)行了替換。
IF EXISTS ( ?? ?SELECT ?? ??? ?ISNULL(historyval, 0.0) ?? ?FROM ?? ??? ?ce_bf_l_energyh_t_2 ?? ?WHERE ?? ??? ?tagname = '123' ) BEGIN ?? ?--如果存在 ?? ?SELECT ?? ??? ?ISNULL(historyval, 0.0) ?? ?FROM ?? ??? ?ce_bf_l_energyh_t_2 ?? ?WHERE ?? ??? ?tagname = '123' ?? ?END ?? ?ELSE ? ?? ?BEGIN ?? ??? ?--如果不存在 ?? ??? ?SELECT ?? ??? ??? ?0.0 ?? ??? ?END
SQL Server ISNULL 真是個(gè)坑,CPU飆升90% +
- table1大概1100多萬數(shù)據(jù)
- table2大概80多萬數(shù)據(jù)
MES系統(tǒng),使用了以下SQL語句,并且這個(gè)語句每分鐘終端會(huì)并發(fā)執(zhí)行一次(大概30個(gè)客戶端)
SELECT ? ? AA.id? FROM ? ?table1 aa ? ? LEFT JOIN table2 ?bb ON bb.No= aa.No? WHERE
--就下面這句,把服務(wù)器CPU干到90%多
isnull( aa.fanCode,'0')!='0'?
修改為 :aa.fanCode IS NOT NULL 后CPU回到個(gè)位數(shù)。
總結(jié):盡量少用isnull()函數(shù),就算用也盡量不用在where后面。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
用SQL語句添加刪除修改字段、一些表與字段的基本操作、數(shù)據(jù)庫(kù)備份等
用SQL語句添加刪除修改字段、一些表與字段的基本操作、數(shù)據(jù)庫(kù)備份等,需要的朋友可以參考下。2011-11-11Sql Server中一個(gè)表2個(gè)字段關(guān)聯(lián)同一個(gè)表(代碼解決)
Sql Server中一個(gè)表2個(gè)字段關(guān)聯(lián)同一個(gè)表(代碼解決),需要的朋友可以參考一下2013-02-02SQLServer高效解析JSON格式數(shù)據(jù)的實(shí)例過程
Sql Server從2016開始支持了一些json操作,最近的項(xiàng)目里也是好多地方直接用字段直接存成了json,下面這篇文章主要給大家介紹了關(guān)于SQLServer高效解析JSON格式數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-08-08MS SQL Server2014鏈接到MS SQL Server 2000的解決方案及問題處理
在大數(shù)據(jù)中,我們經(jīng)常需要用到分布式數(shù)據(jù),那么在SqlServer中,我們?nèi)绾蝸韺?shí)現(xiàn)呢,答案就是創(chuàng)建鏈接服務(wù)器!同版本的SqlServer之間的操作網(wǎng)上有很多,今天我們來探討下不同版本SqlServer之間的鏈接問題。2014-07-07解析關(guān)于SQL語句Count的一點(diǎn)細(xì)節(jié)
本篇文章是對(duì)關(guān)于SQL語句Count的一點(diǎn)細(xì)節(jié)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06ASP.NET下向SQLServer2008導(dǎo)入文件實(shí)例操作方法
在Microsoft SQL Server2008以后的版本中,將刪除image數(shù)據(jù)類型。在新的開發(fā)工作中將不適用此數(shù)據(jù)類型,并打算修改當(dāng)前使用此數(shù)據(jù)類型的應(yīng)用程序,改用varbinary(max)數(shù)據(jù)類型。2010-09-09