我之前寫了一篇關於select 查詢時,當not in 裡子查詢中有null值時候,那麼不返回,這個是可以理解的。但是對於多字段我沒測試。有一天開發時,發現跑出的結果和我預想的有出入,我就進行了測試,測試截圖以oracle為例,實際我還在td上也跑了,下邊每一步我都附帶了td結果
create
table test111(a char(5
),b varchar2(10)
);insert
into test111 values
(null
,'1');
insert
into test111 values
('1'
,'1');
insert
into test111 values
('2'
,'1');
create
table test222(a char(5
),b varchar2(10)
);insert
into test222 values
(null
,'1');
insert
into test222 values
('1'
,'1'
);
#首先什麼也不加
#td執行結果與這個一樣
select * from test111 where (a,b) not in (select a,b from test222 );–結果為空
#然後加where條件過濾null值的,是自己想要的結果
#td執行結果與這個一樣
然後用拼接兩個字段
#td不返回
#oracle返回結果如下
重點來了,我之後對於not in 異常差異進行修改,改寫sql改為not exists ,結果更出乎意料
#td和oracle執行結果一樣,對於欄位中有null的都會返回
所以請開發的小夥伴到時候對於null的一定要注意啊,如果有疑問的,可以拿我的sql和表去親測一下;oracle版本我用的是11g
資料庫 not in 的坑
以oracle資料庫為列 create table test 20191124 name varchar2 5 num cnt number insert into test 20191124 values a 1 insert into test 20191124 values b 2 inser...
資料庫超時的坑
每次對資料庫連線時,我們有時候會碰到連線超時或者命令超時,這兩個超時是不一樣的。以ado.net為例,當客戶端和伺服器端連線時,碰到的超時情況主要有下面幾種 當從連線池獲取乙個連線時,碰到超時。當建立乙個全新連線 而不是從連線池獲取 時,碰到超時。當傳送乙個命令 command 到sql serve...
Python Scrapy 插入資料庫的坑
一 假如對應的資料庫是mysql。建立乙個字段 price 定義為float型別。要儲存到這個字段。錯誤做法 正常考慮都是 python建立乙個字元變數 然後 float一下。或是 直接是float變數。然後 insert into values f 正確做法 python建立的還是字元變數,然後 ...