带有可选参数的SQL。填充参数后,我们需要使用LIKE运算符,否则返回所有值

时间:2018-10-29 17:03:37

标签: sql sql-server oracle

我们有一个查询:

SELECT * 
FROM wo_hdr 
WHERE tm_no LIKE CONCAT('%', $P{tm_no}, '%')

但是,当参数$P{tm_no}为null时,我们需要返回所有值。

我看到其他人使用

SELECT * 
FROM wo_hdr 
WHERE tm_no is null or tm_no LIKE CONCAT('%', $P{tm_no}, '%')

这对我们不起作用,因为当$P{tm_no}不为空时,当我们不想返回空值时。

有人知道对此有好的解决方案吗?我以为CASE语句可能会起作用,但是在WHERE子句中使用它会令人困惑。它需要同时使用ORACLE和SQL Server。

谢谢。

1 个答案:

答案 0 :(得分:2)

只需使用以下命令修改您的where子句:

SELECT * 
FROM wo_hdr 
WHERE ($P{tm_no} IS NULL OR tm_no LIKE CONCAT('%', $P{tm_no}, '%'));