动态构建SQL和语句

时间:2016-07-24 17:41:43

标签: sql postgresql

如何编写以下SQL查询:

'Select *
from Address
where cityname like %1
and zipcode = %2'

当邮政编码是可选的时候?

Zipcode是从urlquery中获得的。所以它可能是空的或可能是有效的邮政编码。

如果它为空(''),则查询应返回所有行,如果它不为空,则它应作为查询的附加'和'参数。

1 个答案:

答案 0 :(得分:1)

SELECT *
FROM address
WHERE cityname LIKE %1
  AND zipcode = COALESCE(NULLIF(%2, ''), zipcode);

如果%2为空,NULLIF将返回NULLCOALESCE将返回zipcode,条件将评估为TRUE。< / p>