国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql中is not null和!=null及null介紹

2024-07-24 12:38:17
字體:
來源:轉載
供稿:網友

在mysql中,篩選非空的時候經常會用到is not null和!=null,這兩種方法單從字面上來看感覺是差不多的,其實如果去運行一下試試的話差別會很大.

為什么會出現這種情況呢?

null 表示什么也不是,不能=、>、< … 所有的判斷,結果都是false,所有只能用 is null進行判斷.

默認情況下,推薦使用 IS NOT NULL去判斷,因為SQL默認情況下對!= Null的判斷會永遠返回0行,但沒有語法錯誤.

如果你一定想要使用!= Null來判斷,需要加上這個語句:

set ANSI_NULLS off

這時你會發現IS NOT NULL 和 != null 是等效的,字段如果設為“NULL”,表示如果這個字段的值為空時,自動插入一個“NULL”值.

一個字段如果設為“NOT NULL”,表示如果這個字段的值為空時,不自動插入“NULL”值(任其無值).

所以,設為“NULL”的意思反而是“不能無值”(由MYSQL自動賦“NULL”值),而設為“NOT NULL”是“可以無值”.

其實要證明這一點很簡單,建一個測試表,兩個字段(VC型),一個設為“NULL”,一個設為“NOT NULL”,兩個都插入空值,看看結果就明白了.

NULL 不是 '' 也不是 0.

你的字段定義為 not null,但是卻賦值了一個 null,那么數據庫系統會按照該字段類型選擇一個默認的值放進去,比如 char 就是用空字符串.

但注意,空字符串其實已經是一個確定的值了,就是一個長度為 0 的字符串.

至于 NULL 值,給你一個正確的理解:把 NULL 理解為 UNKNOWN。主要意思是'不知道',就是它可能是任何值;

另外一層意思是'信息缺失',比如某個存儲姓名信息的字段值是 NULL,代表姓名信息缺失。

所以 NULL 值不是任意一個確定的值!

舉例來說,邏輯 與/或 運算會的吧?

與運算:true and true = true,true and false = false,false and true = false,false and false =false.

第一個 true and null,它的結果完全靠 null 確定,如果它是 true 結果就是 true,如果它是 false,結果就是false.

因為 null 代表不知道,所以結果也是不知道,所以是 null.

第二個 false and null,它的結果不需要靠 null 確定,因為 and 運算的特性,有 false 出 false,所以結果是false。

第三個 null and null,就好理解了吧,它完全就是空對空了,兩個操作數都是不知道,結果自然也是不知道,所以是 null.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲沃县| 尼勒克县| 巴彦淖尔市| 莱芜市| 灵台县| 合水县| 新泰市| 临汾市| 康乐县| 宾川县| 双柏县| 正蓝旗| 清新县| 竹溪县| 忻城县| 石河子市| 六安市| 沈阳市| 宝鸡市| 广宗县| 建水县| 衡阳市| 乡宁县| 嵊州市| 陇川县| 宁陕县| 乾安县| 江北区| 乌兰县| 华蓥市| 响水县| 桐城市| 廉江市| 碌曲县| 巴塘县| 河间市| 永丰县| 平南县| 和田县| 寿阳县| 牟定县|