zoukankan      html  css  js  c++  java
  • 解决Oracle模糊查询like '%%'查不出字段值为null的数据--oracle的nvl和hql的coalesce函数

    like '%%'看起来好像是全查数据,实则是除了null值的所有数据。

    经常遇到一种业务是前端输入框模糊查询数据,可以输入也可以不输入,这种情况虽然可以在后端分成为空和不为空两种情况去查询数据,但是一旦这种输入框多了,那么一个输入框2种情况,有多少输入框就有2的多少次方种情况。如果like '%%'的字段是不可为空的,那么就无需担心,要担心的是那些可以为空的字段。

    要使like '%%'能查出值为null的数据,那么就得用oracle的nvl函数。

    nvl(字段,替换的值)

    select * from colossus_crdj where zt_Id=9 and rq>=to_date('2020-11-13 00:00:00','YYYY-MM-DD HH24:MI:SS') 

    and rq<to_date('2020-11-14 00:00:00','YYYY-MM-DD HH24:MI:SS') and sj>=0 and sj<=235959 and xm like '%%' and nvl(bz,' ') like '%%';

    注意上面sql的nvl(bz,'  ') like '%%',查询时遇到bz字段的值为null时,替换成' ',注意两个单引号之间是有空格的,或者可以替换成自己想要的字符,不过最好不要用其他字符吧,万一前端要模糊查询的就是您替换的那个字符串呢

    这样就可以查出值为空的数据了。

    但是hibernate中的hql语法没有nvl,hql的coalesce函数跟oracle的nvl函数。

  • 相关阅读:
    本地SQL密码破解
    SqlServer2005复制分类
    xpsql.cpp: 错误 2 来自 CreateProcess(第 737 行)
    sql server 复制,镜像,日志传输及故障转移集群区别
    使用SQL操作MySQL数据库
    [技术文摘]Resin服务器的使用
    Tomcat新手攻略
    Java连接数据库谈
    jsp中文乱码问题的解决2
    台风来到
  • 原文地址:https://www.cnblogs.com/pzw23/p/13973429.html
Copyright © 2011-2022 走看看