Oracle數據庫模糊查詢語句一個容易忽略的結果:空記錄

原因:

使用SQL語句如下:

select count(*) from test;

結果爲1390.

select count(*) from test where bb not like ‘%禁用%'

結果爲393.

實際瀏覽過程中發現未禁用結果集肯定超過393條記錄。

過程:

1、首先懷疑字符集的問題,也許是客戶端字符集與服務器字符集不匹配。

在別人的機器上使用上述SQL語句後,反反覆覆,類似替換,結果都相同。

2、仍然懷疑是字符集的問題,顛三倒四沒有發現問題真實原因,幾近抓狂。

3、偶然發現bb字段有許多爲空,仔細分析一下,發現bb not like '%禁用%'不會匹配空記錄,於是改爲

select count(*) from test where bb not like ‘%禁用%' or bb is null

結果爲1356。

結論:

模糊匹配由於不經常使用,所以會導致使用時馬虎大意,最終導致人力抓狂。



發佈了43 篇原創文章 · 獲贊 12 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章