PostgreSQL的条件where子句

问题描述:

在我的Ruby on Rails应用程序我用夹克(https://github.com/ankane/blazer),我有以下SQL查询:PostgreSQL的条件where子句

SELECT * 
FROM survey_results sr 
LEFT JOIN clients c ON c.id = sr.client_id 
WHERE sr.client_id = {client_id} 

该查询的作品真的很好。但我需要添加条件逻辑来检查client_id变量是否存在。如果是的话,我过滤这个变量,如果不是,那么我不会启动这个where子句。我怎样才能在PostgreSQL中做到这一点?

检查其空或您的情况是这样的:

WHERE {client_id} IS NULL OR sr.client_id = {client_id} 

WHERE条款评价如下:如果变量是空的,那么WHERE子句评估为true,因此 - 没有过滤。如果不是,则继续下一个条件OR