`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 這兩個條件之間的區別

文章目錄

  • 1、什么是空字符串?
  • 2、兩個引號之間加上空格

好的,我們來詳細解釋一下 we_chat_union_id IS NOT NULLwe_chat_union_id != '' 這兩個條件之間的區別,以及它們在 SQL 查詢中的作用:

1. we_chat_union_id IS NOT NULL

  • 含義: 這個條件用于檢查 we_chat_union_id 列的值是否為 NULL (空值)。
  • 作用:we_chat_union_id 列的值為 NULL 時,該條件不成立,不返回該行數據。如果 we_chat_union_id 列的值不是 NULL(即該列存在一個值,不管是什么內容),該條件成立,返回該行數據。
  • 適用場景:
    • 當你不希望包含 we_chat_union_id 列值為 NULL 的記錄時,使用此條件。
    • NULL 通常表示該字段的值缺失或未知。

2. we_chat_union_id != ''

  • 含義: 這個條件用于檢查 we_chat_union_id 列的值是否為空字符串 ('')。
  • 作用:we_chat_union_id 列的值為空字符串 '' 時,該條件不成立,不返回該行數據。如果 we_chat_union_id 列的值不是空字符串 (例如,包含任何字符,即使是空格),該條件成立,返回該行數據。
  • 適用場景:
    • 當你不希望包含 we_chat_union_id 列值為空字符串的記錄時,使用此條件。
    • 空字符串表示該字段存在,但是內容為空。

核心區別:

特性we_chat_union_id IS NOT NULLwe_chat_union_id != ''
檢查對象列值是否為 NULL列值是否為空字符串 ('')
含義值缺失或未知值存在,但內容為空
是否返回空字符串返回空字符串的記錄不返回空字符串的記錄
適用場景過濾掉沒有 we_chat_union_id 數據的記錄過濾掉 we_chat_union_id 為空字符串的記錄

舉例說明:

假設 user 表中有以下幾條記錄, we_chat_union_id 列的值分別為:

idwe_chat_union_id
1‘o12345’
2NULL
3‘’
4’ ’
5‘abcdefg’
  • SELECT * FROM user WHERE we_chat_union_id IS NOT NULL;

    • 返回:記錄 1, 3, 4, 5 (因為它們的 we_chat_union_id 列的值都不是 NULL)。
  • SELECT * FROM user WHERE we_chat_union_id != '';

    • 返回:記錄 1, 4, 5 (因為它們的 we_chat_union_id 列的值都不是空字符串 '')
  • SELECT * FROM user WHERE we_chat_union_id IS NOT NULL AND we_chat_union_id != '';

    • 返回:記錄 1, 4, 5 (同時滿足不為 NULL 且不為空字符串)。

總結:

  • IS NOT NULL 用來判斷一個字段的值是否為 NULL
  • != '' 用來判斷一個字符串字段的值是否為空字符串(長度為0的字符串)。

we_chat_union_id 這種字符串類型的列中,既有可能出現 NULL,也有可能出現空字符串 '',所以在很多情況下需要同時使用這兩個條件來過濾掉無效數據。 如果只是判斷是否不為 NULL,那么即使字段值是空字符串 '',記錄仍然會被返回。

1、什么是空字符串?

好的,我們來詳細解釋一下什么是空字符串:

空字符串的定義:

空字符串(Empty String)是指長度為零的字符串,即不包含任何字符的字符串。 換句話說,它是一個沒有字符的序列。

表示方法:

在編程語言和數據庫中,空字符串通常使用以下方式表示:

  • 兩個雙引號 “”: 例如,在 JavaScript, Java, C++, Python 等許多編程語言中,都使用 "" 來表示空字符串。
  • 兩個單引號 ‘’: 例如,在 Python, JavaScript, SQL 等語言中,可以使用 '' 來表示空字符串。
  • 在一些特定的環境中: 也可能使用 String.Empty 或類似的表示方法,但這本質上還是代表一個不包含任何字符的字符串。

特性:

  • 長度為零: 空字符串的長度為 0。
  • 沒有字符: 它不包含任何字符(包括空格、制表符、換行符等)。
  • 是一個字符串: 空字符串仍然是一種字符串類型,而不是 NULL 或其他數據類型。
  • 可操作: 盡管它沒有字符,但你可以對空字符串進行一些字符串操作,例如連接、比較等。

示例:

  • 在 JavaScript 中:

    let emptyString = "";
    console.log(emptyString.length); // 輸出: 0
    
  • 在 Python 中:

    empty_string = ''
    print(len(empty_string))  # 輸出: 0
    
  • 在 SQL 中:

    SELECT * FROM users WHERE username = '';
    

使用場景:

  • 初始化字符串變量: 將字符串變量初始化為一個空字符串,表示它當前不包含任何值。
  • 檢查輸入: 檢查用戶輸入的字符串是否為空。
  • 字符串拼接: 拼接字符串時,初始時可以使用空字符串作為起始值。
  • 字符串操作: 作為字符串操作的默認值,例如替換或刪除操作。
  • 數據庫查詢: 在數據庫查詢中,可以用來查找某個字符串字段值為空的記錄。

與 NULL 的區別:

空字符串 (""'') 和 NULL 是不同的概念:

  • 空字符串 是一個字符串類型的值,表示該字段存在,但內容為空。
  • NULL 表示該字段沒有值,缺失或未知。

總結:

空字符串是一個長度為零、不包含任何字符的字符串。它是一種字符串類型的值,不是 NULL,也不等于數字 0。空字符串在編程和數據庫中有著廣泛的應用,例如表示字符串變量的初始狀態,檢查用戶輸入,進行字符串操作等。

2、兩個引號之間加上空格

不,兩個引號之間加上空格,就不再屬于空字符串了。它變成了包含一個空格字符的字符串。

空字符串 vs. 包含空格的字符串

  • 空字符串 (""''):
    • 長度為 0。
    • 不包含任何字符。
    • 表示一個沒有任何內容的字符串。
  • 包含空格的字符串 (" "' '):
    • 長度為 1 (因為空格字符本身也占一個長度)。
    • 包含一個空格字符。
    • 表示一個包含空格字符的字符串。

區別的關鍵在于長度和包含的字符:

  • 長度: 空字符串的長度是 0,而包含空格的字符串的長度是 1 或更多 (取決于空格的個數)。
  • 包含的字符: 空字符串不包含任何字符,而包含空格的字符串包含至少一個空格字符。

代碼示例(以 Python 為例):

empty_string = ""
space_string = " "print(f"空字符串的長度: {len(empty_string)}")  # 輸出: 空字符串的長度: 0
print(f"包含空格的字符串的長度: {len(space_string)}")  # 輸出: 包含空格的字符串的長度: 1print(empty_string == "") # True,空字符串等于空字符串
print(space_string == "") # False,包含空格的字符串不等于空字符串print(empty_string == " ") # False,空字符串不等于包含空格的字符串
print(space_string == " ") # True,  包含空格的字符串等于包含空格的字符串

數據庫中的影響:

在數據庫查詢中,""'' 表示空字符串,而 " "' ' 表示包含空格的字符串。它們是不同的值,所以查詢條件 column = '' 不會匹配 column = ' ' 的記錄。

總結:

兩個引號之間沒有任何字符才是空字符串。 即使只有一個空格,該字符串也變成了包含空格字符的字符串,不再是空字符串。 在處理字符串的時候,注意區分空字符串和包含空格的字符串,它們有著不同的含義和用途。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64039.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64039.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64039.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何利用AWS監聽存儲桶并上傳到tg bot

業務描述: 需要監聽aws的存儲中的最新消息,發送新的消息推送到指定tg的頻道。 主要流程: 1.上傳消息到s3存儲桶(不做具體描述) 2.通過aws的lambda監聽s3存儲桶的最新消息(txt文件) 3.將txt文件…

HarmonyOS NEXT 實戰之元服務:靜態案例效果---查看國內航班服務

背景: 前幾篇學習了元服務,后面幾期就讓我們開發簡單的元服務吧,里面豐富的內容大家自己加,本期案例 僅供參考 先上本期效果圖 ,里面圖片自行替換 效果圖1完整代碼案例如下: Index代碼 import { authen…

Windows11家庭版啟動Hyper-V

Hyper-V 是微軟的硬件虛擬化產品,允許在 Windows 上以虛擬機形式運行多個操作系統。每個虛擬機都在虛擬硬件上運行,可以創建虛擬硬盤驅動器、虛擬交換機等虛擬設備。使用虛擬化可以運行需要較舊版本的 Windows 或非 Windows 操作系統的軟件,以…

為什么深度學習和神經網絡要使用 GPU?

為什么深度學習和神經網絡要使用 GPU? 本篇文章的目標是幫助初學者了解 CUDA 是什么,以及它如何與 PyTorch 配合使用,更重要的是,我們為何在神經網絡編程中使用 GPU。 圖形處理單元 (GPU) 要了解 CUDA,我們需要對圖…

每天五分鐘機器學習:核函數

本文重點 在學習支持向量機算法之前,我們要繼續學習一些數學基礎,本文我們將學習核函數的概念。當數據線性不可分的時候,此時就需要核函數出場了,它可以將低維不可分的數據映射到高維可分數據,此時就可以完成數據分類了。 核函數的定義 核函數K(x, y)定義為兩個數據點x…

MaaS(Model as a Service)

1.MasS是什么? Model as a Service(MaaS)是一種云計算服務模式,它允許用戶通過互聯網訪問和使用機器學習模型,而不需要自行構建和維護這些模型。MaaS提供了模型的托管、管理和監控,使用戶能夠專注于應用程…

圖像處理-Ch7-快速小波變換和小波包

個人博客!無廣告觀看,因為這節內容太多了,有點放不下,分了三節 文章目錄 快速小波變換(The Fast Wavelet Transform)與兩頻段子帶編譯碼系統的關系例:計算一維小波變換 一維快速小波反變換例:計算一維小波…

KAFKA 權威指南筆記(一)究竟應該配置多少個BROKER?

一個KAFKA集群需要多少個BROKER? 一個單獨的Kafka服務器被叫做BROKER,BROKER可以處理數千個分區以及每秒百萬級別的消息量。由BROKER組成了“集群”(其中由集群控制器角色的BROKER是從成員中選舉出來的,負責控制管理工作&#xf…

【ES6復習筆記】函數參數的默認值(6)

在ES6中,函數參數默認值是一個非常有用的特性,它允許你在定義函數時為參數指定一個默認值。如果在調用函數時沒有提供相應的參數值,那么函數將使用默認值。 1. 形參初始值 具有默認值的參數,一般位置要靠后。這是一個潛規則&…

WebRtc webrtc-streamer部署

文章目錄 本文檔只是為了留檔方便以后工作運維,或者給同事分享文檔內容比較簡陋命令也不是特別全,不適合小白觀看,如有不懂可以私信,上班期間都是在得 WebRtc webrtc-streamer 部署 docker run -p 8000:8000 -it mpromonet/webrt…

Spring Boot中冪等性的應用

在 Spring Boot 中,冪等性是實現分布式系統設計和接口調用的一個重要概念,尤其在高并發、分布式環境下,確保接口重復調用不會引發系統數據異常至關重要。 冪等性概念 冪等性(Idempotence)是指一次請求和重復多次請求…

leetcode 7. 整數反轉

class Solution { public: int reverse(int x) { long long n0; if(x0) return 0; while(x%100) { xx/10; } while(x!0) { nn*10x%10; xx/10; } if(n<-2147483648||n>2147483647) return 0; return n; } };

[項目][boost搜索引擎#4] cpp-httplib使用 log.hpp 前端 測試及總結

目錄 編寫http_server模塊 1. 引入cpp-httplib到項目中 2. cpp-httplib的使用介紹 3. 正式編寫http_server 九、添加日志到項目中 十、編寫前端模塊 十一. 詳解傳 gitee 十二、項目總結 項目的擴展 寫在前面 [項目詳解][boost搜索引擎#1] 概述 | 去標簽 | 數據清洗 |…

xxl-job 簡單的入門到實戰

本文是參考官方文檔自己實踐一次&#xff0c;純享版&#xff0c;大致也是作者邊寫博客邊去跟著官方文檔實現 一、前期準備 1、官網地址 GitHub地址&#xff1a; GitHub - xuxueli/xxl-job: A distributed task scheduling framework.&#xff08;分布式任務調度平臺XXL-JOB&…

Centos7, 使用yum工具,出現 Could not resolve host: mirrorlist.centos.org

在 CentOS 7 中使用 yum 工具時&#xff0c;如果出現 "Could not resolve host: mirrorlist.centos.org" 的錯誤&#xff0c;通常是因為默認的鏡像源無法訪問。以下是一些常用的解決方法&#xff1a; 檢查網絡連接&#xff1a;首先使用 ping 命令測試網絡連接是否正常…

【教程】通過Docker運行AnythingLLM

轉載請注明出處&#xff1a;小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你&#xff0c;歡迎[點贊、收藏、關注]哦~ 官方教程&#xff1a;Local Docker Installation ~ AnythingLLM 1、先創建一個目錄用于保存anythingllm的持久化文件&#xff1a; sudo mkdir /app su…

若依(RuoYi-Vue)+Flowable工作流前后端整合教程

此教程適合若依前后端分離項目&#xff0c;其他項目可以在擴展列表中進行查找。 近期公司里需要對很久以前的RuoYi-Vue前后端分離項目擴展出flowable的功能&#xff0c;當然這個重任也是落在了我的身上&#xff08;不然也不會有這篇文章&#xff09;&#xff0c;然后我在官網看…

ubuntu 網絡管理--NetworkManager

ubuntu 網絡管理--NetworkManager 1 介紹2 NetworkManager 命令2 nmcli 命令顯示可用的wifi AP連接wifi檢查網絡連接 ?? 如何刪除刪除網絡連接查看設備狀態添加一個新的以太網連接設置靜態 IP 地址啟用并測試連接添加新的wifi連接 3 其他命令參考 1 介紹 NetworkManager 是標…

計算機網絡習題(第5章 網絡層 第6章 傳輸層)

第5章 網絡層 一、單選題 1、下列關于 IPv4 地址的說法中&#xff0c;錯誤的是( )。 A、 IP 地址是邏輯地址 B、 IP 地址一般用點分十進制表示 C、 205.106.286.36 是一個合法的 IP 地址 D、 同一個網絡中不能有兩臺計算機的 IP 地址相同 正確答案&#xff1a; C 2、…

水庫大壩三維模型的開發和使用3Dmax篇

成果圖 開發過程 工具插件three.js先加載模型做水體銜接水位測量標尺水位標記斷面標記大壩監測點打點 上代碼&#xff0c;技術交流V: bloxed <template><div class"box w100 h100"><el-row :gutter"20" v-loading"loading"e…