MySQL如何判断字符串为NULL或者为空字符串

目录
  • 判断字符串为NULL或者为空字符串
  • MySQL中NULL和空字符串区别
    • 一般会有以下疑问
    • 注意事项

判断字符串为NULL或者为空字符串

函数名 说明
ISNULL(expr) 如果expr为null返回值1,否则返回值为0
IFNULL(expr1,expr2) 如果expr1值为null返回expr2的值,否则返回expr1的值
NULLIF(expr1,expr2) 如果expr1==expr2返回值为null,否则返回expr1的值;相当于case when expr1=expr2 then null else expr1 end
COALESCE 返回传入的参数中第一个非null的值
IF(expr1,expr2,expr3) 如果expr1的值为true,则返回expr2的值,否则返回expr3的值

例:

查找学生姓名不为null的学生信息

SELECT * FROM student WHERE ISNULL(stu_name) <1
SELECT * FROM student WHERE stu_name is not null

查询学生成绩,若score为null则返回0

SELECT IFNULL('score',0) FROM stu_score
SELECT COALESCE('score',0) FROM stu_score
SELECT IF(IFNULL('score',null)=null,0,score) FROM stu_score
SELECT CASE WHEN score is null THEN 0 ELSE score END AS score FROM stu_score

MySQL中NULL和空字符串区别

相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚

一般会有以下疑问

  • 1.字段类型是NOT NULL,为什么可以插入空值?
  • 2.NOT NULL的效率比NULL高?
  • 3.判断字段不为空的时,到底要 select * from table where column <>  还是要用 select * from table wherecolumn is not null 呢?

带着上面几个疑问,我们来深入研究一下NULL 和 NOT NULL 到底有什么不一样。

首先,我们要搞清楚“空字符串” 和 “NULL” 的概念:

  • 空值是不占用空间的。
  • MySQL中的NULL是占用空间的

打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。

注意事项

在进行count()统计某列的记录数的时候,如果采用的NULL值,系统会自动忽略掉,但是空值是会进行统计到其中的。

判断NULL 用IS NULL 或者 IS NOT NULL, SQL语句函数中可以使用ifnull()函数来进行处理,判断空字符用=''或者 <>''来进行处理

对于MySQL特殊的注意事项,对于timestamp数据类型,如果往这个数据类型插入的列插入NULL值,则出现的值是当前系统时间。插入空值,则会出现 0000-00-00 00:00:00

对于空值的判断到底是使用is null 还是='' 要根据实际情况来进行区分。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MySql如何去除字符串前缀,两边,后缀

    目录 MySql去除字符串前缀,两边,后缀 效果 语句 Trim 函数 MySql字符串处理常用方法 1.在mybatis的Mapper.xml的sql语句中 2.trim()的使用 3.字符串拆分:SUBSTRING_INDEX(str, delim, count) 4.替换函数:replace( str, from_str, to_str) 5.获取字符串长度:LENGTH( str ) MySql去除字符串前缀,两边,后缀 效果 语句 select supplierNum, trim(LE

  • mysql中的find_in_set字符串查找函数解析

    目录 需求 方案 函数 1. 介绍 2. 语法:FIND_IN_SET(needle,haystack) 3. 实战 插曲 总结 需求 系统中,不论是订单还是退货单,有的平台使用需要卖家审核,有的则不需要,所以在系统中可以设置订单或退货单的流程节点. 而对于每个流程节点,客户需求是每个节点都要根据系统下的员工的角色去做分发,从而订单指定到个人,而不是整个公司的员工都可以处理. 方案 对于上述场景,我实现的方案是在订单表和退货单表都增加了对应节点待处理人字段,多个人可处理的话,则用,分隔,保存对应

  • mysql字符串拼接并设置null值的实例方法

    #字符串拼接 concat(s1,s2); 将表中last_name和first_name中的字符串拼接 select concat(last_name,first_name) as 姓名 from employees; #只会修改last_name不会修改first_name SELECT first_name,last_name AS f FROM employees; #将两个列用逗号隔开并命名为out_put SELECT CONCAT(`last_name`,',',`phone_nu

  • Mysql查询以某"字符串"开头的查询方式

    目录 Mysql查询以某"字符串"开头的查询 查询不以某个或者某些字符串为开头的字符串 查询以某个或者某些字符串为开头的字符串 Mysql查询条件字符串类型 = 0 假如有表A A表中有以下数据 Mysql查询以某"字符串"开头的查询 查询不以某个或者某些字符串为开头的字符串 1.使用left()函数 select * from order where left(id,2)<>"AB"; 2.使用like select * from

  • MySQL 去除字符串中的括号以及括号里的所有内容

    目录 去除字符串中的括号以及括号里的所有内容 用到的函数 MySQL 字段中去掉括号 去除字符串中的括号以及括号里的所有内容 update 表 set 列名 = REPLACE(列名,SUBSTRING(列名 , LOCATE( '(',列名) , LOCATE(')',列名)) ,被替换的字符) 用到的函数 replace(列名,被替换的字符串,替换后的字符串):替换字符串中的一部分内容 substring(列名,开始位置,结束位置):截取字符串中的一部分 locate(被查找的字符串,列名)

  • MySQL如何判断字符串为NULL或者为空字符串

    目录 判断字符串为NULL或者为空字符串 MySQL中NULL和空字符串区别 一般会有以下疑问 注意事项 判断字符串为NULL或者为空字符串 函数名 说明 ISNULL(expr) 如果expr为null返回值1,否则返回值为0 IFNULL(expr1,expr2) 如果expr1值为null返回expr2的值,否则返回expr1的值 NULLIF(expr1,expr2) 如果expr1==expr2返回值为null,否则返回expr1的值:相当于case when expr1=expr2

  • 为什么vue中不建议使用空字符串作为className

    目录 比较空字符串''和null 情况1:使用空字符串'' 情况2:使用null 情况3:使用undefined 使用对象的形式绑定class 使用 &&绑定class 案例1:isBold为false 案例2:isBold为null 空class就一定不对吗? 在我们用三元表达式给DOM元素设置class时,使用空字符串,会导致渲染出一个没有值的空class, 为了避免这种情况出现,可以使用null来代替空字符串. <!-- ❌ --> <div :class=&quo

  • JavaScript中0、空字符串、'0'是true还是false的知识点分享

    最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true   在js中空字符串与0相等  即空字符串等于false 0 == false  结果是tue   比较的时候 布尔类型的转换成number类型  false 为0  true 为1 "0" == fase 结果是true  字符串准成number Boolean("0")

  • 详解java中String值为空字符串与null的判断方法

    Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个字符串.例如声明一个对象的引用,String a=null. ""表示的是一个空字符串,也就是说它的长度为0.例如声明一个字符串String s="". 2.内存分配 String a=null:表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间. String s="":表示声明一个字符串类型的引用,其值为""空

  • MySQL中case when对NULL值判断的踩坑记录

    目录 前言 Mysql中case when语法: 案例实战: 总结: 前言 今天在开发程序中,从MySQL中提取数据的时候,使用到了case when的语法用来做判断,在使用过程中在判断NULL值的时候遇到个小问题 sql中的case when 有点类似于Java中的switch语句,比较灵活,但是在Mysql中对于Null的处理有点特殊 Mysql中case when语法: 语法1: CASE case_value WHEN when_value THEN statement_list [WH

  • mysql实现批量修改字段null值改为空字符串

    目录 批量修改字段null值改为空字符串 将某个字段修改为null(从不允许为空not null修改为null) 批量修改字段null值改为空字符串 UPDATE 表名 SET 字段名 = ( CASE WHEN IFNULL(字段名, '') = '' THEN '' ELSE 字段名 END ) WHERE 字段名 IS NULL; 将某个字段修改为null(从不允许为空not null修改为null) 以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们.

  • 区分MySQL中的空值(null)和空字符('')

    日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符. 空字符('')和空值(null)表面上看都是空,其实存在一些差异: 定义: 空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占用存储空间的 空字符串('')的长度是0,是不占用空间的 通俗的讲: 空字符串('')就像是一个真空转态杯子,什么都没有. 空值(NULL)就像是一个装满空气的杯子,含有东西. 二者虽然看起来都是空的.透明的,但是有着本质的区别. 区别: 在进行count()统计

  • MySQL 字符串拆分实例(无分隔符的字符串截取)

    无分隔符的字符串截取 题目要求 数据库中字段值: 实现效果:需要将一行数据变成多行 实现的sql SELECT LEFT(SUBSTRING('P1111',help_topic_id+1),1) AS num FROM mysql.help_topic WHERE help_topic_id < LENGTH('P1111'); 涉及的知识点 一.字符串截取:SUBSTRING(str,pos) 1.参数说明 参数名 解释 str 被截取的字符串 pos 从第几位开始截取,当 pos 为正数时

  • 为什么mysql字段要使用NOT NULL

    最近刚入职新公司,发现数据库设计有点小问题,数据库字段很多没有NOT NULL,对于强迫症晚期患者来说,简直难以忍受,因此有了这篇文章. 基于目前大部分的开发现状来说,我们都会把字段全部设置成NOT NULL并且给默认值的形式. 通常,对于默认值一般这样设置: 整形,我们一般使用0作为默认值. 字符串,默认空字符串 时间,可以默认1970-01-01 08:00:01,或者默认0000-00-00 00:00:00,但是连接参数要添加zeroDateTimeBehavior=convertToN

  • mysql条件判断函数的具体使用

    目录 IF(expr,v1,v2)函数 IFNULL(v1,v2)函数 CASE函数 条件判断函数也被称为控制流程函数,根据满足的不同条件,执行响应的流程.mysql中进行条件判断的函数有if.ifunll和case等. IF(expr,v1,v2)函数 IF(expr,v1,v2):如果表达式expr是TRUE(expr <> 0 and expr <> null),则返回值为V1:否则返回值为V2. mysql> select if (1>2, 2, 3), if

随机推荐