資料庫中空值引起的乙個奇怪問題

2021-12-30 09:33:09 字數 950 閱讀 9970

資料庫中空值引起的乙個奇怪問題

在專案中遇到了很奇怪的問題,表結構是乙個基本的樹結構,簡化如下:

[sql]

create table [dbo].[test2](

[nodeid] [int] identity(1,1) not null,

[nodename] [nchar](10) null,

[parentid] [int] null

) on [primary]

需求很簡單,就是查詢所有葉節點,也就是沒有子節點的節點,換句話說就是節點不是父節點的節點

使用sql語句就是:

[sql]

select [nodeid]

,[nodename]

,[parentid]

from [test2] where nodeid not in(select parentid from [test2] )

想法沒錯,可是已測試去發現,沒有找到資料,怎麼可能呢?怎麼可能沒有葉節點呢?但確實是沒有一條記錄!!

分布執行子查詢select  parentid from [test2],分析結果才發現,原來有乙個null值,導致了問題,原來是null導致了為題。

把查詢語句修改如下就正確了。

[sql]

select [nodeid]

,[nodename]

,[parentid]

from [test2] where nodeid not in(select parentid from [test2] where parentid is not null)

以前只注意到了判斷是不是null不能使用=,只能使用 is null,想不到在使用in時如何集合裡邊存在null,竟然會導致整個查詢條件失敗,查不到任何語句。

看來對於null出現在查詢條件中必須的特殊處理,否則就會引起非常奇怪的問題。

乙個很奇怪的問題

if equipmentlist.size 0 string equipidarray new string 3 for int i 0 i equipmentlist.size i element equipment element equipmentlist.get i string equip...

innerHTML的乙個奇怪問題

背景 使用ajax翻頁 起初 是這樣的 頁面 include cn videoplay comment listcomment.ftl ajax comment innerhtml originalrequest.responsetext 在firefox下是好的,在ie下頁面會掛在那不動,經檢測a...

innerHTML的乙個奇怪問題

背景 使用ajax翻頁 起初 是這樣的 頁面 include cn videoplay comment listcomment.ftl ajax comment innerhtml originalrequest.responsetext 在firefox下是好的,在ie下頁面會掛在那不動,經檢測a...