iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中设置NULL和空白字符串的问题及解决
  • 127
分享到

MySQL中设置NULL和空白字符串的问题及解决

2024-04-02 19:04:59 127人浏览 独家记忆
摘要

目录Mysql设置NULL和空白字符串问题在mysql中判断是否为NULLMysql中空值(null)和空字符(‘‘)长度和判空ifnull建议MySQL设置NULL和空白字符串问题 今天在修改一

MySQL设置NULL和空白字符串问题

今天在修改一个bug,发现了很多问题。

记录其中一个比较有意识的bug。

数据库使用的是MySQL

先不谈问题,我就是觉得同一个字段,有人存了设置为空白字符串,有人设置了NULL。

MySQL中设置NULL和空白字符串的问题及解决

空值是不占用空间的,MySQL中的NULL其实是占用空间的。

还有啊,有时候你虽然插入了NULL,但在数据库中还是有值的,例如时间字段timestamp,虽然你插入了NULL,但会自动获取当前时间进行存储。

在MySQL中判断是否为NULL

为了处理这种情况,MySQL提供了三大运算符:

  • IS NULL: 当列的值是 NULL,此运算符返回 true。
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
  • <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。

MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。

从数据库获取一个集合,里面存着如下内容

MySQL中设置NULL和空白字符串的问题及解决

之前写代码的人是这样操作的

					if(alarmDetailList!=null && alarmDetailList.size()>0){
						for(int i=0;i<alarmDetailList.size();i++){
							Object[] obj = alarmDetailList.get(i);
							String deviceType = obj[5].toString();//设备类型
							List newlist = new ArrayList();
							Alarm alarm = new Alarm();
							alarm.setDevicename(obj[0].toString());
							alarm.setStarttime(obj[1].toString());
							alarm.setEndtime(obj[2].toString());
							alarm.setAlarmcontent(obj[4].toString());
							alarm.setAlarmType(obj[5].toString());
							result.add(alarm);
						}

debug一下,很明显出了问题,在遍历时,当值为NULL时,使用toString()方法是会报空指针异常的。

加一个判断,即可(多写一个无关的条件,只判断==null即可,不要管我)

					if(alarmDetailList!=null && alarmDetailList.size()>0){
						for(int i=0;i<alarmDetailList.size();i++){
							Object[] obj = alarmDetailList.get(i);
							String deviceType = obj[5].toString();//设备类型
							List newlist = new ArrayList();
							Alarm alarm = new Alarm();
							alarm.setDevicename(obj[0].toString());
							alarm.setStarttime(obj[1].toString());
							alarm.setEndtime(obj[2].toString());
							alarm.setAlarmcontent((obj[4]==null||obj[4].equals(""))?"":obj[4].toString());
							alarm.setAlarmType(obj[5].toString());
							result.add(alarm);
						}
					}

前人挖坑,后人接着挖,总有人会跳进去。。

MySQL中空值(null)和空字符(‘‘)

空值(null)和空字符(‘’)是两个比较容易混淆的概念。

本文对两者的区别做简单梳理。

长度和判空

 长度判断空
空值null长度为null,占空间,但具体占用多大空间不确定。判断null用is null或is not null
空字符串’’长度为0,不占用空间。判断空字符用=‘‘或者!=’’

ifnull

对于空值null,可以使用ifnull()函数进行处理。

例如,

select ifnull(comment, '') from orange where id=100;

如果comment字段为null,就返回空字符串。

字段定义为not null,查询的时候也可能返回null

另外,对于字段定义为not null,查询的时候也可能返回null。

例如,

当记录不存在时,查询结果为空:

> select  cluster_name  from orange   where hostname='123';
Empty set (0.00 sec)

对于查询结果为空,如果使用max()函数,返回值不再是空,字符值为null。

>select    max(cluster_name)   from orange   where name='123';
+-------------------+
| max(cluster_name) |
+-------------------+
| NULL       |
+-------------------+
1 row in set (0.00 sec)

建议

尽量不要用null作为默认值。null作为默认值的字段,如果作为索引,会影响效率。

如果确认该字段不会用作索引,也不怕影响效率,可以直接忽略上面一条。 

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

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中设置NULL和空白字符串的问题及解决

本文链接: https://www.lsjlt.com/news/33914.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MybatisPlus查询条件为空字符串或null问题及解决
    目录查询条件为空字符串或null问题问题描述解决办法查询表的时候有些字段为空问题亲测,已经解决查询条件为空字符串或null问题 问题描述 工作种当使用mybatisplus框架进行...
    99+
    2024-04-02
  • vue前端传空值、空字符串的问题及解决
    目录vue前端传空值及空字符串问题vue空值报错问题vue前端传空值及空字符串问题 在与后端调试接口时,经常接口里的参数会有空值,如果每次都要后端写判断,代码容易冗余。  ...
    99+
    2024-04-02
  • mybatisiftest不为空字符串且不为null的问题
    目录iftest不为空字符串且不为null在mybatis中iftest 在mybatis中,iftest语法Controller层—>对应xml文件my...
    99+
    2024-04-02
  • mybatis if test不为空字符串且不为null的问题怎么解决
    这篇文章主要介绍“mybatis if test不为空字符串且不为null的问题怎么解决”,在日常操作中,相信很多人在mybatis if test不为空字符串且不为null的问题怎么解决问题上存在疑...
    99+
    2023-06-29
  • oracle中null和空字符串是等价的嘛
    oracle 中,null 和空字符串不相等。null 代表未知值,与任何值都不相等;空字符串是一个长度为 0 的字符串,可以与其他空字符串相等。null 与空字符串的差异在于:null...
    99+
    2024-05-03
    oracle
  • MySQL中空值Null和空字符‘‘的具体使用
    目录1. 空值 Null 和空字符 ''2. 空值 Null 和空字符 '' 在查询方式上的对比2.1. 创建 SQL 脚本2.2. 查询 usern...
    99+
    2024-04-02
  • C++中常见的字符串处理问题及解决方案
    C++中常见的字符串处理问题及解决方案引言字符串处理是在C++编程中经常遇到的问题之一。无论是从用户的输入,还是从文件中读取数据,或者是进行数据的处理和转换,字符串处理始终占据着重要的位置。本文将介绍在C++中常见的字符串处理问题,并给出相...
    99+
    2023-10-22
    C++ 解决方案 字符串处理 关键词:
  • C#中常见的字符串操作问题及解决方法
    C#中常见的字符串操作问题及解决方法字符串拼接问题在C#中,我们经常需要将多个字符串拼接在一起,但是如果使用简单的加号"+"运算符,则会出现性能问题。这是因为在每次拼接字符串时,都会创建一个新的字符串对象,导致内存的频繁分配和回收。解决方法...
    99+
    2023-10-22
    解决方法 字符串操作问题
  • MySQL中可为空的字段设置为NULL还是NOT NULL
    经常用mysql的人可能会遇到下面几种情况: 1、我字段类型是not null,为什么我可以插入空值 2、为什么not null的效率比null高 3、判断字段不为空的时候,到底要用 selec ...
    99+
    2024-04-02
  • C语言解决字符串中插入和删除某段字符串问题
    目录字符串中插入某段字符核心思想字符串删除某段字符串核心思想总结字符串中插入某段字符 核心思想 已知插入字符串的长度len,将插入的位置的后面的字母统统往后移动len个长度。 最后将...
    99+
    2023-02-06
    C语言字符串 插入某段字符串 删除某段字符串
  • C++中字符串处理问题及解决方法概述
    C++中字符串处理问题及解决方法概述摘要:字符串处理是编程中常见的任务之一,尤其在C++中,对字符串的操作有时会遇到一些困难。本文将概述C++中常见的字符串处理问题,并提供相应的解决方法,并附上具体的代码示例。字符串长度超过限制问题描述:当...
    99+
    2023-10-22
    字符串处理问题 C++字符串解决方法 字符串处理概述
  • shell字符串转数组空格问题怎么解决
    在Shell中,可以使用`IFS`(Internal Field Separator)环境变量来设置分隔符,从而将字符串转换为数组。...
    99+
    2023-05-13
    shell字符串转数组 shell
  • mysql字符串拼接并设置null值的实例方法
    #字符串拼接 concat(s1,s2); 将表中last_name和first_name中的字符串拼接 select concat(last_name,first_na...
    99+
    2024-04-02
  • Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决
    1.字符串的字符转换1.1.字符转换的概念在前面说的的字符串替换,是将字符串中的一个子串替换成了新的子串,如果我们想对字符串中的某些字符进行转换,也就是对字符串中的单个字符进行替换,可以调用方法maketrans和translate来实现。...
    99+
    2023-05-23
    Python
  • mybatis 解决将数值0识别成空字符串的问题
    今天遇到一个问题 我在用java的BigDecimal对象时,值是0.00000;该对象不是空的,是new出来的,我需要将该值插入数据库,数据库对于该值的接收字段类型是decimal...
    99+
    2024-04-02
  • mysql中replace函数替换字符串问题怎么解决
    这篇“mysql中replace函数替换字符串问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql...
    99+
    2023-07-04
  • C语言倒置字符串问题怎么解决
    这篇文章主要介绍“C语言倒置字符串问题怎么解决”,在日常操作中,相信很多人在C语言倒置字符串问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言倒置字符串问题怎么解决”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • C++中字符串处理问题的解决方法
    C++中字符串处理问题的解决方法概述:在C++编程中,字符串的处理是一个常见的问题,涉及到字符串的截取、拼接、查找、替换等操作。本文将介绍几种常用的解决方法,并提供具体的代码示例。一、字符串截取字符串截取是指从一个字符串中获取一部分子串。在...
    99+
    2023-10-22
    C++ 解决方法 字符串处理
  • Golang中字符串拼接问题怎么解决
    本篇内容主要讲解“Golang中字符串拼接问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang中字符串拼接问题怎么解决”吧!1.概述Go的字符串是一个不可改变的数据结构,这和其...
    99+
    2023-07-06
  • Java中HashMap与String字符串互转的问题解决
    目录背景:原因:背景: 当我们有需求将HashMap转为Json格式的String时,切记不要使用HashMap的toString()方法,需要使用FastJson/Gson将Has...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作