当前位置:  开发笔记 > 数据库 > 正文

如何在HQL中模拟NVL

如何解决《如何在HQL中模拟NVL》经验,为你挑选了1个好方法。

我试过这个:

from Table where (:par1 is null or col1 = :par1)

但它发生了

from Table where :par1 is null

始终返回表的所有行,即使:par1不为null.

 select * from table where col1 = 'asdf'

不会返回任何行.

我不能使用本机语法,因为我的应用程序应该在不同的数据库引擎上运行



1> Il-Bhima..:

nvl与HQL中的coalesce命令等效的是命令. 如果不为null coalesce(a,b)则返回,否则返回.aab

所以你会想要的东西:

from Table where col1 = coalesce(:par1, 'asdf')


我想要的实际上是:从表中col1 = coalesce(:par1,col1)并且它有效!非常感谢!
coalesce()也是一个ANSI SQL函数,应该适用于大多数数据库,例如Oracle,本机.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有