PostgreSQL对空值处理nullif函数

nullif(var1,var2)
如果var1和var2相等则返回null,如果不相等则返回var1

select nullif(1,null);  结果:1
select nullif(null,1);  结果:null
select nullif(1,1);     结果:null
select nullif(1,0);     结果:1


create table posts(
    id serial primary key,
    title varchar(255) not null,
    excerpt varchar(255),
    body text,
    create_tiem timestamp default current_timestamp,
    update_time timestamp
);


insert into posts(title,excerpt,body) values
    ('test post 1','test post excerpt 1','test post body 1'),
    ('test post 2','','test post body 2'),
    ('test post 3', null ,'test post body 3');

案例1:
select id,title ,excerpt from posts;
结果:由结果得知excerpt有空值null
id       title            excerpt
1        test post 1      test post excerpt 1
2        test post 2      
3        test post 3      [null]



案例2:
select id,title,coalesce(
                excerpt,
                left(body,40)
                ) 
    from posts;
结果:由结果得知null值的会做处理,但是对于''是不做处理的
id   title          excerpt
1      test post 1    test post excerpt 1
2      test post 2  
3      test post 3    test post body 3



案例3:
select id,title,coalesce(
                nullif(excerpt,''),
                left(body,40)
                ) 
    from posts;
结果:由结果得知null值和''的都会做处理,因为使用了nullif函数
id     title          excerpt
1      test post 1    test post excerpt 1
2      test post 2    test post body 2
3      test post 3    test post body 3




left函数:
返回最左面 n 字符
select left('abcdefgh', 5);   结果:abcde


right函数:
返回最右面 n 个字符
select right('abcdefgh', 3);  结果:fgh


rpad函数:
字符不满 10 个,用 # 补满
select rpad('abcd', 10, '#'); 结果:abcd######


备注:COALESCE(currentcount,0)
如果currentcount不为null,返回currentcount。否则返回0。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhang.Voi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值