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

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

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

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

有一個表,總記錄數(shù)是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條??不是應(yīng)該700條嗎?。?!

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

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

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

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

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

那就也是說,兩條查詢語句查出來的結(jié)果,不應(yīng)該是互補的嗎??理論上行數(shù)相加應(yīng)該等于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得到的結(jié)果一比較,發(fā)現(xiàn):原來缺少的300條記錄,是id 為NULL的情況!

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

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

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

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

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

當(dāng)我們使用這樣的查詢語句時:

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

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

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

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

這時排除了username為空的列,就可以得到預(yù)期的結(jié)果了

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

相關(guān)文章

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

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

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

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

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

    CentOS7.5 安裝MySql的教程

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

    mysql中cast函數(shù)用法小結(jié)

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

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

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

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

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

    mysql如何查詢當(dāng)前數(shù)據(jù)庫中不為空的表

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

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

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

    MySQL數(shù)據(jù)庫操作常用命令小結(jié)

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

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

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

最新評論