我有一张表:
Col1 Col2 123 I 125 A 126 127 I 128 A
如果where子句中没有传递值,我想选择所有记录。下面的脚本似乎不起作用
Select * from Table where Col2 coalesce('A', ' ')
mf98qq941#
我有两个选择
1.动态SQL
您可以使用动态SQL根据参数值即时组合查询。如何使用动态SQL取决于您使用的特定编程语言、ORM或脚本。例如,使用MyBatis时,您将执行以下操作:
<select> select * from mytable <if test="param != null"> where col2 = #{param} </if> </select>
<if>标记将根据参数的to运行时值包含或排除整个WHERE子句。
<if>
WHERE
2.使用SQL逻辑
您可以将SQL SELECT编写为:
SELECT
select * from mytable where #{param} is null or col2 = #{param}
如果参数为null,则检索表的所有行;如果不为空,则只检索匹配的行。注意:#{param}表示参数的占位符。请根据编程语言进行更改。
#{param}
1条答案
按热度按时间mf98qq941#
我有两个选择
1.动态SQL
您可以使用动态SQL根据参数值即时组合查询。如何使用动态SQL取决于您使用的特定编程语言、ORM或脚本。例如,使用MyBatis时,您将执行以下操作:
<if>
标记将根据参数的to运行时值包含或排除整个WHERE
子句。2.使用SQL逻辑
您可以将SQL
SELECT
编写为:如果参数为null,则检索表的所有行;如果不为空,则只检索匹配的行。
注意:
#{param}
表示参数的占位符。请根据编程语言进行更改。