db2 如何在where子句中选择一个或所有值

vc9ivgsu  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(194)

我有一张表:

Col1    Col2  
123     I   
125     A    
126  
127     I      
128     A

如果where子句中没有传递值,我想选择所有记录。下面的脚本似乎不起作用

Select * from Table where Col2 coalesce('A', ' ')
mf98qq94

mf98qq941#

我有两个选择

1.动态SQL

您可以使用动态SQL根据参数值即时组合查询。如何使用动态SQL取决于您使用的特定编程语言、ORM或脚本。例如,使用MyBatis时,您将执行以下操作:

<select>
  select * from mytable
  <if test="param != null">
    where col2 = #{param}
  </if>
</select>

<if>标记将根据参数的to运行时值包含或排除整个WHERE子句。

2.使用SQL逻辑

您可以将SQL SELECT编写为:

select * 
from mytable
where #{param} is null or col2 = #{param}

如果参数为null,则检索表的所有行;如果不为空,则只检索匹配的行。
注意:#{param}表示参数的占位符。请根据编程语言进行更改。

相关问题