欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決從集合運算到mysql的not like找不出NULL的問題

 更新時間:2021年01月01日 14:17:36   作者:lee_moonj  
這篇文章主要介紹了解決從集合運算到mysql的not like找不出NULL的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

記一次有趣的發(fā)現(xiàn):

有一個表,總記錄數是1000條,現(xiàn)在有一條查詢語句:

#查詢語句1
#找出表中id中含有‘A'或‘B'或‘C'的字段
select * from table1 where id like '%A%' or id like '%B%' or id like '%C%' ;
#成功查出300條

嗯查詢正常,有300條記錄呢。

然后我隨便再敲一次查詢語句…:

#查詢語句2
#找出表中id中不含有‘A'且不含有‘B'且不含有‘C'的字段
select * from table1 where id not like '%A%' and id not like '%B%' and id not like '%C%' ;
#成功查出400條

嗯查出了400條呢…什么?!只有400條??不是應該700條嗎!?。?/p>

我如雷轟頂——哪里不對了??

按道理,“找出表中id中含有‘A'或‘B'或‘C'的字段” 應該等價于 “找出表中id中不含有‘A'且不含有‘B'且不含有‘C'的字段” 的??!這是由集合運算決定的?。?/p>

“找出表中id中含有‘A'或‘B'或‘C'的字段”>>看作>> A∪B∪C

“找出表中id中不含有‘A'且不含有‘B'且不含有‘C'的字段”>>看作>> ∁UA∩∁UB∩∁UC

然而我們根據運算規(guī)則可知:∁U(A∪B∪C) = ∁UA ∩ ∁UB ∩ ∁UC

那就也是說,兩條查詢語句查出來的結果,不應該是互補的嗎??理論上行數相加應該等于1000的呀,那現(xiàn)在怎么缺了300條呢?

奇了怪了。到底哪里錯了呢??

于是換一條查詢語句:

#查詢語句3
#找出表中id中不含有‘A'或‘B'或‘C'的字段
select * from table1 where id not in (select * from table1 where id like '%A%' or id like '%B%' or id like '%C%' );
#成功查出700條

咦??怎么這樣查,才是查詢語句1的互補集呢?

我將查詢語句2和查詢語句3得到的結果一比較,發(fā)現(xiàn):原來缺少的300條記錄,是id 為NULL的情況!

也就是說,not like ‘%A%' 是不能查出NULL的記錄的!

經過了解,發(fā)現(xiàn):

又發(fā)現(xiàn)了一個細節(jié)知識~

補充:注意mysql的not in查詢值中存在null值時返回的查詢結果會一直為空

現(xiàn)在有數據庫表是

當我們使用這樣的查詢語句時:

select * from user
where username not in 
(
select username 
from user
where id != 2
)

這時子查詢的結果包含了null值,所以結果會一直返回空查詢,而不會返回預期的id為2這一行

我們可以稍微修改一下查詢形式:

select * from user
where username not in 
(
select username 
from user
where id != 2 and username is not null
)

這時排除了username為空的列,就可以得到預期的結果了

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • SQL?Server實現(xiàn)全文搜索查詢詳解

    SQL?Server實現(xiàn)全文搜索查詢詳解

    這篇文章介紹了SQL?Server的全文搜索功能,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • MySQL批量去掉某個字段中的空格

    MySQL批量去掉某個字段中的空格

    這篇文章主要介紹了MySQL批量去掉某個字段中的空格的簡單方法,具有一定參考價值,給大家分享下,一起參考,交流。
    2017-10-10
  • CentOS7.5 安裝MySql的教程

    CentOS7.5 安裝MySql的教程

    這篇文章主要介紹了CentOS7.5 安裝MySql的教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • mysql中cast函數用法小結

    mysql中cast函數用法小結

    在MySQL中,CAST函數用于將一個表達式轉換為指定的數據類型,本文主要介紹了mysql中cast函數用法小結,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 修改mysql密碼與忘記mysql密碼的處理方法

    修改mysql密碼與忘記mysql密碼的處理方法

    修改mysql密碼與忘記mysql密碼的處理方法,有需要的朋友可以參考下
    2013-02-02
  • 定位和優(yōu)化mysql慢查詢的常見方法分享

    定位和優(yōu)化mysql慢查詢的常見方法分享

    MySQL中的慢查詢(Slow Query)指執(zhí)行時間超過指定閾值的查詢語句,默認閾值是long_query_time參數設置的秒值,MySQL有幾種常見的方法可以發(fā)現(xiàn)和獲取慢查詢,接下來小編將給大家詳細的介紹一下這些方法,需要的朋友可以參考下
    2023-08-08
  • mysql如何查詢當前數據庫中不為空的表

    mysql如何查詢當前數據庫中不為空的表

    這篇文章主要介紹了mysql如何查詢當前數據庫中不為空的表問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • MySQL 使用SQL語句修改表名的實現(xiàn)

    MySQL 使用SQL語句修改表名的實現(xiàn)

    這篇文章主要介紹了MySQL 使用SQL語句修改表名的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • MySQL數據庫操作常用命令小結

    MySQL數據庫操作常用命令小結

    這篇文章主要介紹了MySQL數據庫操作常用命令小結,例如創(chuàng)建數據庫、使用數據庫、查看數據庫、數據庫編碼操作等命令講解,需要的朋友可以參考下
    2014-12-12
  • mysql中刪除數據的幾種方法(最新推薦)

    mysql中刪除數據的幾種方法(最新推薦)

    在MySQL數據庫中,刪除數據是一個常見的操作,它允許從表中移除不再需要的數據,在執(zhí)行刪除操作時,需要謹慎,以免誤刪重要數據,本文給大家介紹mysql中刪除數據的幾種方法,感興趣的朋友一起看看吧
    2023-11-11

最新評論