今天做项目时遇到一个问题:画面上有选择日期的地方,当然这个日期不是必填项,可以不选择,但是如果不选择的话就会以string.empty的形式向数据库插入/更新数据,这时数据库中存在的其实是1900-01-01,而不是我想要的空字符串;再检索画面时,就直接将1900-01-01显示出来了。
解决方法:
使用NULLIF函数,在插入/更新语句中使用
select nullif('a','') //结果:a
select nullif('a','b') //结果:a
select nullif(null,'b') //结果:NULLIF 的第一个参数的类型不能是 NULL 常量,因为第一个参数的类型必须是已知的
select nullif('','b') //结果:空字符串
select nullif('','') //结果:NULL
利用上面蓝色字体就可以向数据库中插入NULL,而不会插入1900-01-01了
例:
insert into tMyTable
(dDate)
values
(nullif('',''))
------结果------
iAuto_id dDate
1 NULL