資料庫 not in 的坑(後續)

2021-10-05 11:12:39 字數 1325 閱讀 2347

我之前寫了一篇關於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建立的還是字元變數,然後 ...