精华内容
下载资源
问答
  • 如果在mybatis中,对时间字段;采用空值判断,在 if 标签中将 '' 放在前面会报错,可以先判断null再判断 '';如图 转载于:https://www.cnblogs.com/abelkeith/p/10517098.html...

    如果在mybatis中,对时间字段;采用空值判断,在 if 标签中将 '' 放在前面会报错,可以先判断null再判断 '';如图

     

    转载于:https://www.cnblogs.com/abelkeith/p/10517098.html

    展开全文
  • var enCodeMsg = "签单时间:" + billDate.value + "★起保时间:" + startDate.value + "★商业险保费:" + paid.value + "★无赔款折扣:" + zhekou.value + "★新转续:" + insurce_flag.value + "★AB类业务类型:" +...
  • 对MYsql中NULL空值与空字符串区别详解"空值"是对null值的中文叫法,两者同指一个东西。空字符串即长度为零的字符串,在代码里"零长度字符串"用一对没有间隔的英文引号''表示,它的数据类型是明确的即属于字符型。...

     

                                         MYSQL中NULL空值与空字符串区别详解及代码

            "空值"是对null值的中文叫法,两者同指一个东西。空字符串即长度为零的字符串,在代码里"零长度字符串"用一对没有间隔的英文引号''表示,它的数据类型是明确的即属于字符型。

            很多朋友会错误的认为NULL与空字符串’’是相同的。这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的。NULL是指没有值,而’’则表示值是存在的,只不过是长度为零。

           下面我们实际建立一个表来进行测试和区分。

    CREATE TABLE `tb_test` (

      `name` varchar(255) DEFAULT NULL,

      `value` varchar(255) DEFAULT NULL,

      `test` char(0) DEFAULT NULL

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

     

    test列char(0)可以保存空值(NULL)或长度为零的字符串(空字符串)。

    插入表中几条数据:

    insert into tb_test values('t1',null,null);  ##创建一条value为空的数据

    insert into tb_test values('t2','','');      ##创建一条为空字符的数据

    insert into tb_test values('t2','111','');

    insert into tb_test values('t2','111',null);

     

    1. 对NULL的判断

    用isnull判断是否为空:只有value为null 的时候 ISNULL(exp) 函数的返回值为1 ,空串和有数据都为0;

    select * from tb_test where value is  null;

    select * from tb_test where  ISNULL(value)

    查询结果:

    select * from tb_test where value is not null;

    或select * from tb_test where  ISNULL(value)=0

    查询结果:

    select * from tb_test where test is not null;  -- test特殊字段查询

    select * from tb_test where  ISNULL(test)=0

       

     

    2、对空字符串的判断

    select * from tb_test where  LENGTH(value)=0;

    select * from tb_test where value='';

    查询结果

     

    select * from tb_test where  LENGTH(test)=0;

    select * from tb_test where test='';

    查询结果:

    3、同时剔除null 和 空字符串

    select * from tb_test where ISNULL(value)=0 and LENGTH(trim(value))>0;

    select * from tb_test where value is not null  and  value <>'';

    4、对NULL和空字符串的替换

    主要用这两个函数ifnull(目标字段,替换值) & COALESCE (目标字段,替换值)

    select  name,IFNULL(value,'ddd') from tb_test;

    select  name,COALESCE(value,'ddd') from tb_test;

    查询结果:

    同时替换两个

    select  name, case when  (value='' or value is null) then 'ddd'  else value end as value  from tb_test;

    5、在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。

    包含NULL的表达式总是会导出NULL值,除非在关于操作符的文档中以及表达式的函数中作了其他规定。下述示例中的所有列均返回NULL:

     

        SELECT NULL, 1+NULL, CONCAT('test',NULL);

       

     

    如果打算搜索列值为NULL的列,不能使用expr = NULL测试。下述语句不返回任何行,这是因为,对于任何表达式,expr = NULL永远不为“真”:

    SELECT * FROM tb_test WHERE value = NULL;  

       

     

     

    另外MySQL数据库中执行SQL语句,需要小心几个陷阱:

    1、空值不一定为空

          空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空。

          在MySQL数据库中,NULL对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的TimesTamp数据类型。如果往这个数据类型的列中插入Null值,则其代表的就是系统的当前时间。另外一个是具有auto_increment属性的列。如果往这属性的列中插入Null值的话,则系统会插入一个正整数序列。而如果在其他数据类型中,如字符型数据的列中插入Null的数据,则其插入的就是一个空值。

     

    2、Count等统计函数,在空值上也有特殊的应用。

           使用DISTINCT、GROUP BY或ORDER BY时,所有NULL值将被视为等同的。

           使用ORDER BY时,首先将显示NULL值,如果指定了DESC按降序排列,NULL值将最后显示。

           SELECT * FROM tb_test order by value;

          SELECT * FROM tb_test order by value desc;

     

     

    对于聚合(累计)函数,如COUNT()、MIN()和SUM(),将忽略NULL值。

           对此的例外是COUNT(*),它将计数行而不是单独的列值。例如,下述语句产生两个计数。首先计数表中的行数,其次计数value列中的非NULL值数目:

    代码如下:

    SELECT COUNT(*), COUNT(value) FROM tb_test;

     

     

    3、可为NULL的列使得索引、索引统计和值比较都更复杂,可以NULL的列会使用更多的存储空间,在MYSQL里也需要特殊处理。当可为NULL的列被索引时,每个索引记录需要一个额外的字节。因为可为NULL是列的默认属性,通常情况下最好指定列为NOT NULL,除非真的的需要存储NULL值。

    实战示例,解疑答惑。

               --不间端地思考,实时地批判你的工作!

     

     

    展开全文
  • ${a.datetime} 当输出datetime数据时,如果datetime为null系统将报异常;...当进行时间格式化处理时 ${a.datetime?string('yyyy')}  需要将前面的内容用() 括起来才可以使用! 如 ${(a.datetime?s

    ${a.datetime}

    当输出datetime数据时,如果datetime为null系统将报异常;因此需要在后面加一个!用于设置默认值

    ${a.datetime!'无数据'}  或 ${a.datetime!}


    当进行时间格式化处理时

    ${a.datetime?string('yyyy')} 

    需要将前面的内容用() 括起来才可以使用!

    ${(a.datetime?string('yyyy'))!'无数据'} 或 ${(a.datetime?string('yyyy'))!} 

    展开全文
  • 字符('')和空值(null)表面上看都是空,其实存在一些差异:定义:空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占用存储空间的空字符串('')的长度是0,是不占用空间的通俗的讲:空字符串('')就像是一个...

    日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符。

    空字符('')和空值(null)表面上看都是空,其实存在一些差异:

    定义:

    空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占用存储空间的

    空字符串('')的长度是0,是不占用空间的

    通俗的讲:

    空字符串('')就像是一个真空转态杯子,什么都没有。

    空值(NULL)就像是一个装满空气的杯子,含有东西。

    二者虽然看起来都是空的、透明的,但是有着本质的区别。

    区别:

    在进行count()统计某列时候,如果用null值系统会自动忽略掉,但是空字符会进行统计。

    不过count(*)会被优化,直接返回总行数,包括null值。

    判断null用is null或is not null,SQL可以使用ifnull()函数进行处理;判断空字符用=''或者!=''进行处理。

    对于timestamp数据类型,插入null值会是当前系统时间;插入空字符,则出现0000-00-00 00:00:00

    实例:

    新建一张表test_ab,并插入4行数据。

    CREATE TABLE test_ab (id int,

    col_a varchar(128),

    col_b varchar(128) not null

    );

    insert test_ab(id,col_a,col_b) values(1,1,1);

    insert test_ab(id,col_a,col_b) values(2,'','');

    insert test_ab(id,col_a,col_b) values(3,null,'');

    insert test_ab(id,col_a,col_b) values(4,null,1);

    mysql> select * from test_ab;

    +------+-------+-------+

    | id | col_a | col_b |

    +------+-------+-------+

    | 1 | 1 | 1 |

    | 2 | | |

    | 3 | NULL | |

    | 4 | NULL | 1 |

    +------+-------+-------+

    4 rows in set (0.00 sec)

    首先比较一下,空字符('')和空值(null)查询方式的不同:

    mysql> select * from test_ab where col_a = '';

    +------+-------+-------+

    | id | col_a | col_b |

    +------+-------+-------+

    | 2 | | |

    +------+-------+-------+

    1 row in set (0.00 sec)

    mysql> select * from test_ab where col_a is null;

    +------+-------+-------+

    | id | col_a | col_b |

    +------+-------+-------+

    | 3 | NULL | |

    | 4 | NULL | 1 |

    +------+-------+-------+

    2 rows in set (0.00 sec)

    由此可见,null和''的查询方式不同。而且比较字符 ‘=’’>’ ‘’不能用于查询null,

    如果需要查询空值(null),需使用is null 和is not null。

    第二种比较,参与运算

    mysql> select col_a+1 from test_ab where id = 4;

    +---------+

    | col_a+1 |

    +---------+

    | NULL |

    +---------+

    1 row in set (0.00 sec)

    mysql> select col_b+1 from test_ab where id = 4;

    +---------+

    | col_b+1 |

    +---------+

    | 2 |

    +---------+

    1 row in set (0.00 sec)

    由此可见,空值(null)不能参与任何计算,因为空值参与任何计算都为空。

    所以,当程序业务中存在计算的时候,需要特别注意。

    如果非要参与计算,需使用ifnull函数,将null转换为''才能正常计算。

    第三种比较,统计数量

    mysql> select count(col_a) from test_ab;

    +--------------+

    | count(col_a) |

    +--------------+

    | 2 |

    +--------------+

    1 row in set (0.00 sec)

    mysql> select count(col_b) from test_ab;

    +--------------+

    | count(col_b) |

    +--------------+

    | 4 |

    +--------------+

    1 row in set (0.00 sec)

    由此可见,当统计数量的时候。空值(null)并不会被当成有效值去统计。

    同理,sum()求和的时候,null也不会被统计进来,这样就能理解,

    为什么null计算的时候结果为空,而sum()求和的时候结果正常了。

    结论:

    所以在设置默认值的时候,尽量不要用null当默认值,如果字段是int类型,默认为0;如果是varchar类型,默认值用空字符串('')会更好一些。带有null的默认值还是可以走索引的,只是会影响效率。当然,如果确认该字段不会用到索引的话,也是可以设置为null的。

    在设置字段的时候,可以给字段设置为 not null ,因为 not null 这个概念和默认值是不冲突的。我们在设置默认值为('')的时候,虽然避免了null的情况,但是可能存在直接给字段赋值为null,这样数据库中还是会出现null的情况,所以强烈建议都给字段加上 not null。

    类似这样的:

    mysql> alter table test_ab modify `col_b` varchar(128) NOT NULL DEFAULT '';

    Query OK, 0 rows affected (0.00 sec)

    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc test_ab;

    +-------+--------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +-------+--------------+------+-----+---------+-------+

    | id | int | YES | | NULL | |

    | col_a | varchar(128) | YES | | NULL | |

    | col_b | varchar(128) | NO | | | |

    +-------+--------------+------+-----+---------+-------+

    3 rows in set (0.00 sec)

    尽管在存储空间上,在索引性能上可能并不比空字符差,但是为了避免其身上特殊性,给项目带来不确定因素,因此建议默认值不要使用 NULL。

    ----by 钢铁 648403020@qq.com 09.30.2020

    展开全文
  • 数据库存储数据有必要搞清空值,空字符串和 NULL 的概念。 空字符串是单引号引的,它其实是不占空间的。 MySQL 中 null 其实是占空间的,官网文档里有说明。 它们之前的长度验证: select length('') as '空串', ...
  • (作者:陈玓玏)
  • [转载]mysql 空值处理

    千次阅读 2021-01-25 16:25:24
    这主 要是因为针对空值这个数据类型有几个比较特殊的运算字符。如果某个字段是空字符,数据库中是利用字段名称来代替。相反,如果插入的是空值,则直接显示的是 NULL。这其他数据库的显示方式也是不同的。 一是IS ...
  • 如何在mysql日期类型字段(NULL = yes)中插入NULL或空值.如果我尝试插入一个空值,它会插入0000-00-00,但是我想保持为空或为空.感谢帮助.UPDATE请看我已经将默认值设置为NULL`payment_due_on` date DEFAULT NULL,Ok OK...
  • oracle 时间字符串相互转换

    万次阅读 2018-02-23 15:42:47
    to_char(date,format):时间字符串select to_char(sysdate,'YYYY"年"MM"月"DD"日"') 时间字符串 from dual;to_date(str,format):字符串转时间select to_date('2018-02-23 15:33:...
  • 主要介绍了Mybatis Plus 字段为空值时执行更新方法未更新解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • #自定义dataframe时如何为个别元素赋空值...#字符串类型的,使用None赋值为空值 #数值类型的,使用numpy.NaN赋值为空值 #时间类型的,使用pandas.NaT赋值为空值 testframe = pd.DataFrame({'c1':[None, 'b', 'c'], ...
  • [数据库]mysql 空值(null)和空字符()的区别02020-09-30 02:00:09日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符。空字符('')和空值(null)表面上看都是空,其实存在一些差异:...
  • 如何处理csv中的空值

    千次阅读 2020-11-30 10:37:51
    展开全部数据库里面的”空2113值”有两种:空字符(“”5261)、空值(NULL)。 两种存储方式在4102数据库中1653都很常见,实际中根据业务或者个人习惯可以用这两种方式来存储“空值”。那这两种到底有什么区别,下面...
  • 陷阱一:空值不一定为空空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值...
  • null=null和''=''都是false的,因此不会查询出任何数据 正确的写法可以是nvl(null,'1')=nvl(null,'1') 转载于:https://my.oschin...
  • MySQL数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中...如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段...
  • Mybatis 时间排序让空值NULL排在后面

    千次阅读 2018-10-18 10:00:32
    有一张通知(notification)表;...2.先按发布时间排序再按创建时间排序,发布时间为空的要排在后面。 select * from notification; id content status create_time publiish_time 1 aaa on ...
  • 最近遇到SpringMVC写个controller类,传一个空串的字符类型过来,正常情况是会自动转成date类型的,因为数据表对应类类型就是date的 解决方法是在controller类的后面加个注解: @InitBinder protected void ...
  • SQL 时间字段为空转换为空字符

    千次阅读 2019-02-18 16:03:40
    先看下数据库结构: 转换后的效果: 代码: SELECT *, CASE WHEN AddTime IS NOT NULL THEN CONVERT(varchar(20),AddTime,20) ELSE '' END ConvertTime FROM [BingFaTest].[dbo].[Product] ... ...
  • 今天项目用到了对日期的格式转换,并且由于日期数据比较杂,存在null值和' ',所以需要对他们处理: 1.字符串转日期 ,to_date(exp1,exp2); exp1表示字符串,exp2便是字符串的格式。例如str='20180124':  to_date...
  • pyspark 空值填充

    万次阅读 2019-06-04 12:27:05
    就是简单的空值处理,花费了好几天的时间。其实还是API的理解不到位的原因。特此整理一下,共勉共享。 1. 问题描述 具体描述一下待处理的问题,以便记录整理。 假设有一个数据如下表: id name 1 sun 2 ...
  • 陷阱一:空值不一定为空空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值...
  • Mysql数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中...如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段...
  • python空值的一些问题

    2020-11-28 11:56:51
    在数据处理的过程中,经常会遇到数据为空的情况,然后踩到很多坑浪费很久的时间,今天总结一下Python中空值的情况,以防后续再掉进坑里。Python中空值一般有四种情况,None," ",False和NaN:前三种类型中 打印 None =...
  • KMP —— 字符串分析算法

    千次阅读 多人点赞 2020-11-30 07:34:01
    换句话说我们只需要研究模式串,并且把它的相关信息挖掘出来,然后用它就可以任何字符串做匹配了。 我们先用一个例子来了解一下我们需要怎么研究一个模式串,并且把它的信息挖掘出来的。 这里我们就用我们之前...
  • 一、pandas中 字符串 处理 对字符串 进行拆分连接(去空格或者其它符号) import re text ='foo bar \t good \tssda' strlist = re.split('\s+',text) #正则匹配任意空字符(去除空格) 输出1: ['foo', 'bar'...
  • Oracle中日期和空值操作

    千次阅读 2020-06-03 16:02:36
    Oracle知识点整理(四)前言日期关键字SYSDATESYSTIMESTAMP日期函数TO_DATETO_CHARLAST_DAYADD_MONTHSMONTHS_BETWEENNEXT_DAYLEAST/GREATEST日期得计算日期RR注意点空值NULL默认值插入NULL修改NULLNULL值的运算操作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,633
精华内容 36,253
关键字:

时间字符段跟空值比较