精品久久看,欧美成人久久一级c片免费,日本加勒比在线精品视频,国产一区二区三区免费大片天美,国产成人精品999在线,97理论三级九七午夜在线观看

東坡下載:內容最豐富最安全的下載站!

首頁知識庫編程開發 → SQL Server中not in查詢不準確分析及解決方法

SQL Server中not in查詢不準確分析及解決方法

相關文章發表評論 來源:本站整理時間:2017/11/25 9:17:11字體大。A-A+

更多

作者:專題點擊:259次評論:0次標簽: SQLServer

在SQL Server中,Null值并不是一個值,而是表示特定含義,其所表示的含義是“Unknow”,可以理解為未定義或者未知,因此任何與Null值進行比對的二元操作符結果一定為Null,包括Null值本身。而在SQL Server中,Null值的含義轉換為Bool類型的結果為False。讓我們來看一個簡單的例子,如圖1所示。

圖1.Null值與任何值進行對比結果都為Null

SQL Server提供了“IS”操作符與Null值做對比,用于衡量某個值是否為Null。

那么Not In 的問題在哪呢,如圖2所示。

   

圖2.Not In產生不準確的值

在圖2中,條件3不屬于Not In后面列表的任意一個,該查詢卻不返回任何值,與預期的結果不同,那么具體原因就是Not In子句對于Null值的處理,在SQL Server中,圖2中所示的Not In子句其實可以等價轉換為如圖3所示的查詢。

圖3.對于Not In子句來說,可以進行等價轉換

在圖3中可以看到Not In可以轉換為條件對于每個值進行不等比對,并用邏輯與連接起來,而前面提到過Null值與任意其他值做比較時,結果永遠為Null,在Where條件中也就是False,因此3<>null就會導致不返回任何行,導致Not In子句產生的結果在意料之外。

因此,Not In子句如果來自于某個表或者列表很長,其中大量值中即使存在一個Null值,也會導致最終結果不會返回任何數據。

解決辦法

解決辦法就是不使用Not In,而使用Not Exists作為替代。Exists的操作符不會返回Null,只會根據子查詢中的每一行決定返回True或者False,當遇到Null值時,只會返回False,而不會由某個Null值導致整個子查詢表達式為Null。對于圖2中所示的查詢,我們可以改寫為子查詢,如圖4所示。

圖4.Not Exists可以正確返回結果

擴展知識

相關評論

閱讀本文后您有什么感想? 已有 人給出評價!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過難過
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無聊無聊
熱門評論
最新評論
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)

本類常用軟件

主站蜘蛛池模板: www.五月激情 | 国产美女在线观看 | 清纯唯美亚洲综合日韩第 | 精品一区二区三区四区乱码90 | 四虎电影免费观看网站 | 久久免费视频播放 | 国产视频福利一区 | 欧美亚洲国产精品久久 | 国内视频在线观看 | 色 人 阁 七月 | 久久成人国产精品 | 黄色网站视频在线观看 | 国产无遮挡男女羞羞影院在线播放 | 男人的天堂精品国产一区 | 日本免费区 | 99久久无色码中文字幕 | 国产精品1 | 国产天堂亚洲精品 | 久久99精品麻豆国产 | 丁香六月综合激情 | 国内精品一区二区三区 | 久久精品免观看国产成人 | 五月精品| 国产精品男人的天堂 | 日本午夜在线观看 | 九九国产精品 | 国产成人在线精品 | a级毛片免费高清视频 | 精品国产中文一级毛片在线看 | 国产精品日韩在线观看 | 久久精品视频日本 | 亚洲成a人片77777kkkk | 过春天在线观看完整版免费 | 欧美一区二区三区在线观看不卡 | 第四色网站 | 2o2o天天看夜夜看狠狠看 | 激情丁香六月 | 四虎影视久久 | 精品国产欧美一区二区 | 国产成人综合亚洲欧美天堂 | 欧美日韩午夜 |