`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)}")  # 输出: 包含空格的字符串的长度: 1

print(empty_string == "") # True,空字符串等于空字符串
print(space_string == "") # False,包含空格的字符串不等于空字符串

print(empty_string == " ") # False,空字符串不等于包含空格的字符串
print(space_string == " ") # True,  包含空格的字符串等于包含空格的字符串

数据库中的影响:

在数据库查询中,""'' 表示空字符串,而 " "' ' 表示包含空格的字符串。它们是不同的值,所以查询条件 column = '' 不会匹配 column = ' ' 的记录。

总结:

两个引号之间没有任何字符才是空字符串。 即使只有一个空格,该字符串也变成了包含空格字符的字符串,不再是空字符串。 在处理字符串的时候,注意区分空字符串和包含空格的字符串,它们有着不同的含义和用途。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/942894.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NS3学习——tcpVegas算法代码详解(2)

NS3学习——tcpVegas算法代码详解(1)-CSDN博客 目录 4.TcpVegas类中成员函数 (5) CongestionStateSet函数 (6) IncreaseWindow函数 1.检查是否启用 Vgas 2.判断是否完成了一个“Vegas 周期” 2.1--if:判断RTT样本数量是否足够 2.2--e…

【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块

目录 一、温度传感器模块 (1)资源介绍 🔅原理图 🔅STS30-DIS-B 🌙引脚分配 🌙通信 🌙时钟拉伸(Clock Stretching) 🌙单次触发模式 🌙温度数据转…

项目2路由交换

背景 某学校为满足日常教学生活需求,推动数字校园的建设,学校有办公楼和学生宿舍楼和服务器集群三块区域,请合理规划IP地址和VLAN,实现企业内部能够互联互通现要求外网能通过公网地址访问服务器集群,学生和老师能正常…

计算机网络概要与习题

第1章 概论 1、计算机网络 2、互联网 3、计算机网络体系结构 分层模型 OSI/RM 7层模型 TCP/IP 5层模型 协议、PDU、SDU、SAP等术语 数据封装(计算) 第2章 数据通信基础 1、数据通信系统组成 2、主要性能指标 数据传输速率 码元速率 时延 …

使用VsCode编译调试Neo4j源码

文章目录 使用VsCode编译调试Neo4j源码1 简介2 步骤1 下载源码2 依赖3 构建Neo4j4 运行5 安装VsCode扩展6 **调试** 使用VsCode编译调试Neo4j源码 1 简介 Neo4j作为领先的图数据库,在存储、查询上都非常值得分析学习。通过调试、日志等方法跟踪代码工作流有助于理…

HTML-CSS(day01)

W3C标准: W3C( World Wide Web Consortium,万维网联盟) W3C是万维网联盟,这个组成是用来定义标准的。他们规定了一个网页是由三部分组成,分别是: 三个组成部分:(1&…

Linux文件的压缩和解压

【图书推荐】《Ubuntu Linux系统管理与运维实战》_学ubuntu哪本书好-CSDN博客 【图书介绍】】几本Linux系统管理与运维图书_朱文伟 linux驱动-CSDN博客 《Ubuntu Linux系统管理与运维实战(Linux技术丛书)》(张春晓,肖志健)【摘要 书评 试读…

基于springboot的海洋知识服务平台的设计与实现

基于springboot的海洋知识服务平台的设计与实现 写在前面 需要源码加lzlv58787 开发内容 编程语言:Java / Vue2 框架: SpringBoot Shiro Mybatis-plus 项目结构 后端管理系统前台Web 后端管理系统 前台Web

论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 王志豪,厦门大学博士生 刘诗雨,厦门大学硕士生 内容简介 新数据的不断涌现使版本更新成为大型语言模型(LLMs&#xff…

【LeetCode】394、字符串解码

【LeetCode】394、字符串解码 文章目录 一、递归: 嵌套类问题1.1 递归: 嵌套类问题 二、多语言解法 一、递归: 嵌套类问题 1.1 递归: 嵌套类问题 // go func decodeString(s string) string {// 如果遇到 嵌套括号的情况, 则递归// 可能连续多位数字, 则 通过 cur cur * 10 …

iOS开发代码块-OC版

iOS开发代码块-OC版 资源分享资源使用详情Xcode自带代码块自定义代码块 资源分享 自提: 通过网盘分享的文件:CodeSnippets 2.zip 链接: https://pan.baidu.com/s/1Yh8q9PbyeNpuYpasG4IiVg?pwddn1i 提取码: dn1i Xcode中的代码片段默认放在下面的目录中…

微信小程序的轮播图学习报告

微信小程序轮播图学习报告 好久都没分享新内容了,实在惭愧惭愧。今天给大家做一个小程序轮播图的学习报告。 先给大家看一下我的项目状态: 很空昂!像一个正在修行的老道,空的什么也没有。 但是我写了 4 个 view 容器,…

airflow docker 安装

mkdir -p /root/airflow cd /root/airflow && mkdir -p ./dags ./logs ./plugins ./configcd /root/airflow/ wget https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml nano docker-compose.yamlAIRFLOW__CORE__LOAD_EXAMPLES: false #初始化…

Redis篇--常见问题篇7--缓存一致性2(分布式事务框架Seata)

1、概述 在传统的单体应用中,事务管理相对简单,通常使用数据库的本地事务(如MySQL的BEGIN和COMMIT)来保证数据的一致性。然而,在微服务架构中,由于每个服务都有自己的数据库,跨服务的事务管理变…

Linux x86_64离线安装Nginx全教程(含安装包)

最近在整理麒麟V10操作系统的常用中间件的安装今天也把之前的nginx一起整理一下,作为后续的笔记记录 1. 资源 百度网盘下载相关安装包包含信息如下截图 通过网盘分享的文件:nginx链接: https://pan.baidu.com/s/1r6SCnogqbhm-JOTPIjc6xA?pwdjuen 提取…

Python酷库之旅-第三方库Pandas(269)

目录 一、用法精讲 1276、pandas.tseries.offsets.BQuarterEnd.is_quarter_end方法 1276-1、语法 1276-2、参数 1276-3、功能 1276-4、返回值 1276-5、说明 1276-6、用法 1276-6-1、数据准备 1276-6-2、代码示例 1276-6-3、结果输出 1277、pandas.tseries.offsets.…

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。本人不是学前端的,这个是大一的时候上学的和做的笔记,那个时候学的也蒙,故这里对前端做一个总…

API-AI聊天替换网站

当你下载了API-AI聊天软件,但是不会用, Install Windows(PC) | Chatbox Releases ChatGPTNextWeb/ChatGPT-Next-Web GitHub 方法一 请看对应网站的介绍文档。 找到类似于这样说明文档,然后替换 方法二 或者找代码

Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3…

Flink调优----资源配置调优与状态及Checkpoint调优

目录 第 1 章 资源配置调优 1.1 内存设置 1.1.1 TaskManager 内存模型 1、内存模型详解 2、案例分析 1.1.2 生产资源配置示例 1.2 合理利用 cpu 资源 1.2.1 使用 DefaultResourceCalculator 策略 1.2.2 使用 DominantResourceCalculator 策略 1.2.3 使用 DominantRes…