`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.mzph.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,我们需要对图…

图像处理-Ch7-快速小波变换和小波包

个人博客!无广告观看,因为这节内容太多了,有点放不下,分了三节 文章目录 快速小波变换(The Fast Wavelet Transform)与两频段子带编译码系统的关系例:计算一维小波变换 一维快速小波反变换例:计算一维小波…

[项目][boost搜索引擎#4] cpp-httplib使用 log.hpp 前端 测试及总结

目录 编写http_server模块 1. 引入cpp-httplib到项目中 2. cpp-httplib的使用介绍 3. 正式编写http_server 九、添加日志到项目中 十、编写前端模块 十一. 详解传 gitee 十二、项目总结 项目的扩展 写在前面 [项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 |…

xxl-job 简单的入门到实战

本文是参考官方文档自己实践一次,纯享版,大致也是作者边写博客边去跟着官方文档实现 一、前期准备 1、官网地址 GitHub地址: GitHub - xuxueli/xxl-job: A distributed task scheduling framework.(分布式任务调度平台XXL-JOB&…

【教程】通过Docker运行AnythingLLM

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 官方教程:Local Docker Installation ~ AnythingLLM 1、先创建一个目录用于保存anythingllm的持久化文件: sudo mkdir /app su…

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

此教程适合若依前后端分离项目,其他项目可以在扩展列表中进行查找。 近期公司里需要对很久以前的RuoYi-Vue前后端分离项目扩展出flowable的功能,当然这个重任也是落在了我的身上(不然也不会有这篇文章),然后我在官网看…

ubuntu 网络管理--NetworkManager

ubuntu 网络管理--NetworkManager 1 介绍2 NetworkManager 命令2 nmcli 命令显示可用的wifi AP连接wifi检查网络连接 ?? 如何删除删除网络连接查看设备状态添加一个新的以太网连接设置静态 IP 地址启用并测试连接添加新的wifi连接 3 其他命令参考 1 介绍 NetworkManager 是标…

水库大坝三维模型的开发和使用3Dmax篇

成果图 开发过程 工具插件three.js先加载模型做水体衔接水位测量标尺水位标记断面标记大坝监测点打点 上代码&#xff0c;技术交流V: bloxed <template><div class"box w100 h100"><el-row :gutter"20" v-loading"loading"e…

计算机毕设-基于springboot的校园招聘网站的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

重生之我在异世界学编程之C语言:深入动态内存管理收尾 + 柔性数组篇

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文常见的动态内存管理错误&#xf…

无人直播源码

DY无人直播系统架构设计介绍 在DY等短视频平台的直播中&#xff0c;无人直播系统能够提供自动化、智能化的互动体验&#xff0c;既减轻了主播的工作量&#xff0c;又提升了观众的参与感。以下是一个典型的无人直播系统架构设计&#xff0c;包含全局配置、点对点互动、产品话术、…

被裁20240927 --- 嵌入式硬件开发 前篇

前篇主要介绍一些相关的概念&#xff0c;用于常识扫盲&#xff0c;后篇开始上干货&#xff01; 他捧着一只碗吃过百家的饭 1. 处理器芯片1.1 处理器芯片制造商一、 英特尔&#xff08;Intel&#xff09;二、 三星&#xff08;SAMSUNG&#xff09;三、 高通&#xff08;Qualcomm…

【Linux】进程间通信 -> 匿名管道命名管道

进程间通信的目的 数据传输&#xff1a;一个进程许需要将它的数据发送给另外一个进程。资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它们发生了某种事件&#xff08;如进程终止时要通知父进程…

Pytorch注意力机制应用到具体网络方法(闭眼都会版)

文章目录 以YoloV4-tiny为例要加入的注意力机制代码模型中插入注意力机制 以YoloV4-tiny为例 解释一下各个部分&#xff1a; 最左边这部分为主干提取网络&#xff0c;功能为特征提取中间这边部分为FPN&#xff0c;功能是加强特征提取最后一部分为yolo head&#xff0c;功能为获…

修改el-select下拉框高度;更新:支持动态修改

文章目录 效果动态修改&#xff1a;效果代码固定高度版本动态修改高度版本&#xff08;2024-12-25 更新&#xff1a; 支持动态修改下拉框高度&#xff09; 效果 动态修改&#xff1a;效果 代码 固定高度版本 注意点&#xff1a; popper-class 尽量独一无二&#xff0c;防止影…

如何完全剔除对Eureka的依赖,报错Cannot execute request on any known server

【现象】 程序运行报错如下&#xff1a; com.netflix.discovery.shared.transport.TransportException报错Cannot execute request on any known server 【解决方案】 &#xff08;1&#xff09;在Maven工程中的pom去掉Eureka相关的引用&#xff08;注释以下部分&#xff0…

vscode写python,遇到问题:ModuleNotFoundError: No module named ‘pillow‘(已解决 避坑)

1 问题&#xff1a; ModuleNotFoundError: No module named pillow 2 原因&#xff1a; 原因1&#xff1a;安装Pillow的pip命令所处的python版本与vscode调用的python解释器版本不同。 如&#xff1a; 原因2&#xff1a;虽然用的是pillow&#xff0c;但是写代码的时候只能用…