解决mysql oracle 空串和空不兼容的问题

解决mysql oracle 空串和空不兼容的问题

表结构及数据如下:

问题:表testtable中字段B可能为空时,'5'为传入变量,select * from testtable where B != '5',此时mysql返回结果为:

但原意为想返回全部数据,包括为空的数据。

1、新建函数nlnull(当str1为空或空串时返回str2),此函数名由nvl函数名扩展而来。

CREATE  FUNCTION `nlnull`(str1 TINYTEXT, str2 TINYTEXT)
 RETURNS tinytext
    DETERMINISTIC
begin
    declare c TINYTEXT;
    select case when str1 is null then str2 when str1 = '' then str2 else str1 end into c;
    return c;
end;

2、当表A中字段B可能为空时,x为传入变量,sql需要改为:

nlnull(A,' ') != x 注意' '中必须带有空格,这是由于oracle中认为空串和空是相等的

3、正确返回结果:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值