`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别
文章目录
- 1、什么是空字符串?
- 2、两个引号之间加上空格
好的,我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_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 NULL | we_chat_union_id != '' |
|---|---|---|
| 检查对象 | 列值是否为 NULL | 列值是否为空字符串 ('') |
| 含义 | 值缺失或未知 | 值存在,但内容为空 |
| 是否返回空字符串 | 返回空字符串的记录 | 不返回空字符串的记录 |
| 适用场景 | 过滤掉没有 we_chat_union_id 数据的记录 | 过滤掉 we_chat_union_id 为空字符串的记录 |
举例说明:
假设 user 表中有以下几条记录, we_chat_union_id 列的值分别为:
| id | we_chat_union_id |
|---|---|
| 1 | ‘o12345’ |
| 2 | NULL |
| 3 | ‘’ |
| 4 | ’ ’ |
| 5 | ‘abcdefg’ |
-
SELECT * FROM user WHERE we_chat_union_id IS NOT NULL;- 返回:记录 1, 3, 4, 5 (因为它们的
we_chat_union_id列的值都不是NULL)。
- 返回:记录 1, 3, 4, 5 (因为它们的
-
SELECT * FROM user WHERE we_chat_union_id != '';- 返回:记录 1, 4, 5 (因为它们的
we_chat_union_id列的值都不是空字符串'')
- 返回:记录 1, 4, 5 (因为它们的
-
SELECT * FROM user WHERE we_chat_union_id IS NOT NULL AND we_chat_union_id != '';- 返回:记录 1, 4, 5 (同时满足不为
NULL且不为空字符串)。
- 返回:记录 1, 4, 5 (同时满足不为
总结:
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 = ' ' 的记录。
总结:
两个引号之间没有任何字符才是空字符串。 即使只有一个空格,该字符串也变成了包含空格字符的字符串,不再是空字符串。 在处理字符串的时候,注意区分空字符串和包含空格的字符串,它们有着不同的含义和用途。

相关文章:
`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别
文章目录 1、什么是空字符串?2、两个引号之间加上空格 好的,我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别,以及它们在 SQL 查询中的作用: 1. we_chat_union_id IS NOT NULL 含…...
【和春笋一起学C++】文本输入与读取
前言:前面学习了while语句后,下面用while语句实现一个重要的功能,逐字符的读取键盘输入的字符序列,并输出到显示屏上。 准备知识: C的输入输出包含以下3方面的内容: 对系统指定的标准设备的输入和输出。即…...
D类音频应用EMI管理
1、前言 对于EMI,首先需要理解天线。频率和波长之间的关系,如下图所示。 作为有效天线所需的最短长度是λ/4。在空气中,介电常数是1,但是在FR4或玻璃环氧PCB的情况下,介电常数大约4.8。这种效应会导致信号在FR4材…...
第N8周:使用Word2vec实现文本分类
文章目录 一、数据预处理1.加载数据2.构建词典3.生成数据批次和迭代器 二、模型构建1.搭建模型2.初始化模型3.定义训练与评估函数 三、训练模型1.拆分数据集并运行模型 四、总结 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者&a…...
100天精通Python(爬虫篇)——第113天:爬虫基础模块之urllib详细教程大全
文章目录 1. urllib概述2. urllib.request模块 1. urllib.request.urlopen()2. urllib.request.urlretrieve()3. urllib.request.Request()4. urllib.request.install_opener()5. urllib.request.build_opener()6. urllib.request.AbstractBasicAuthHandler7. urllib.request.…...
光谱相机与普通相机的区别
一、成像目的 普通相机:主要目的是记录物体的外观形态,生成人眼可见的、直观的二维图像,重点在于还原物体的形状、颜色和纹理等视觉特征,以供人们进行观赏、记录场景或人物等用途。例如,拍摄旅游风景照片、人物肖像等…...
Mysql数据 新增、修改和删除操作时,这些变化如何被转换为Kafka消息?
Mysql数据 新增、修改和删除操作时,这些变化如何被转换为Kafka消息? 为了在FlinkCDC中配置MySQL同步到Kafka,并采用debezium-json数据格式,我们需要了解当执行新增、修改和删除操作时,这些变化如何被转换为Kafka消息。下面我们将详细介绍这些变化情况,并提供具体的数据样…...
《Python 机器视觉:开启智能视觉新时代》
《Python 机器视觉:开启智能视觉新时代》 一、Python 机器视觉的基石(一)关键库的强大力量(二)环境搭建的便捷路径 二、核心功能与奇妙应用(一)图像的奇幻处理(二)目标检…...
uniapp实现为微信小程序扫一扫的功能
引言 随着微信小程序的快速发展,越来越多的开发者开始关注和学习微信小程序的开发。其中,微信小程序的扫一扫功能是非常常用且实用的功能之一。通过扫描二维码,用户可以获取到相关的信息或者实现特定的功能。 正文 在过去,开发者需要使用微信开发者工具以及相关的开发文档…...
【微信小程序】4plus|搜索框-历史搜索 | 我的咖啡店-综合实训
升级版1-清空全部的再次确认 实现功能: 历史搜索记录展示-历史搜索记录展示10条点击跳转-点击历史搜索记录可同步到搜索框并自动搜索全部删除-可一次性全部删除历史搜索记录全部删除-有再次确认操作展示 进行搜索后留下搜索记录 点击垃圾桶图标,显示【清空全部】 点击【清…...
使用FFmpeg进行拉流和推流操作
FFmpeg是一款强大的多媒体处理工具,可以用于视频的录制、转换、推流和拉流等操作。下面将详细介绍如何使用FFmpeg进行拉流和推流操作。 1. FFmpeg推流操作 推流是将本地的音视频流推送到流媒体服务器上,例如主播将本地电脑上的画面推流到直播平台的流媒…...
Unity微信小游戏接入开放数据域
demo地址:https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/tree/main/Demo/Ranking 官方说明: https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/blob/main/Design/OpenData.md 准备一个Canvas,…...
Spring Boot的开发工具(DevTools)模块中的热更新特性导致的问题
问题: java.lang.ClassCastException: class cn.best.scholarflow.framework.system.domain.entity.SysUser cannot be cast to class cn.best.scholarflow.framework.system.domain.entity.SysUser (cn.best.scholarflow.framework.system.domain.…...
Elasticsearch安装和数据迁移
Elasticsearch安装和数据迁移 Elasticsearch安装 下载并解压Elasticsearch 首先下载Elasticsearch的tar.gz文件,并将其解压: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.2-linux-x86_64.tar.gz tar -xzf elastics…...
Numpy指南:解锁Python多维数组与矩阵运算(下)
文章一览 前言一、排序1.1 numpy.sort1.2 numpy.argsort1.3 numpy.lexsort 二、数组操作2.1 数组元素迭代2.2 数值舍入计算2.3数值取整2.4 数组去重2.5 数组拼接2.6 数组行列交换 三、文件读写3.1 np.fromfile() 读文件3.2 np.loadtxt() 读文件3.3 用 csv 模块逐行处理 CSV 格式…...
路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度
何在路由器上设置代理服务器? 如何在路由器上设置代理服务器? 让所有连接到该路由器的设备都能够享受代理服务器的好处是一个不错的选择,特别是当需要访问特定的网站或加速网络连接的时候。下面是一些您可以跟随的步骤,使用路由器…...
VB.NET在 Excel 二次开发中的全面应用
摘要: 本文详细阐述了如何运用VB.NET进行 Excel 的二次开发。首先介绍了开发环境的搭建,包括安装 Visual Studio 及引用 Excel 对象库。接着深入探讨了各种基础操作,如创建 Excel 应用程序对象、打开与操作工作簿、处理工作表与单元格数据等。…...
uni-app使用组件button遇到的问题
在HBuilder X工具中新建一个空白项目, 1、新建一个about页 然后在pages.json文件里加上路由 2、然后看下导航的方法,发现找不到navigateTo方法 参考:button | uni-app官网 第3行和第4行的代码倒是没问题的,第5行的代码有问题执行…...
如何在Express.js中处理异常情况?
在 Express.js 中处理异常情况是确保应用程序稳定性和安全性的重要方面。未处理的错误可能会导致应用崩溃或暴露敏感信息给用户。以下是几种常见的处理异常的方法: 1. 使用 try...catch 和 async/await 对于异步操作,如数据库查询、文件系统访问等&…...
CKA认证 | Day7 K8s存储
第七章 Kubernetes存储 1、数据卷与数据持久卷 为什么需要数据卷? 容器中的文件在磁盘上是临时存放的,这给容器中运行比较重要的应用程序带来一些问题。 问题1:当容器升级或者崩溃时,kubelet会重建容器,容器内文件会…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
