我在Ruby on Rails (或任何其他编程语言)中有一个方法,我调用quit a complex SQL语句(Common Table Expression (STE) SQL语句)。为了使语句更通用,我将SQL语句包装在一个rails方法中,在这个方法中我可以传入一个参数。为了简单起见,我简化了SQL语句以隔离我的问题。
def sql_statement(id = 'null')
tree_sql = <<-SQL
SELECT * FROM sample_table WHERE foreign_id = #{id}
SQL
find_by_sql(tree_sql)
end
因此,如果我调用不带参数的方法,我希望它执行
SELECT * FROM sample_table WHERE foreign_id IS NULL
如果我传递一个参数(如值5),它将执行以下命令:
SELECT * FROM sample_table WHERE foreign_id = 5
我必须如何更改SQL语句才能使其工作?
发布于 2020-07-13 04:04:38
试一试
SELECT *
FROM sample_table
WHERE (foreign_id = #{id} and #{id} is not null)
OR (foreign_id is null and #{id} is null)
https://stackoverflow.com/questions/62865453
复制相似问题