【发布时间】:2018-01-11 10:37:42
【问题描述】:
想象一下 Postgres 中的一个表:
Firstname Surname Age
------------------------------
Joe Bloggs 5
Sam Bloggs 7
Ellie Jones 4
Mike Smith 10
我想根据一组值对(元组)对其进行范围过滤:
{Surname=Bloggs && Age>=6 },
{Surname=Smith && Age>=10}
返回:
Firstname Surname Age
------------------------------
Sam Bloggs 7
Mike Smith 10
我意识到我可以通过手动滚动 SQL 语句来做到这一点:
SELECT * FROM MyTable t
WHERE (t.Surname = 'Bloggs' AND t.Age >= 6 )
OR (t.Surname = 'Smith' AND t.Age >= 10)
但是,我需要从 C# 调用它,并且我对避免为每个查询生成纯文本 SQL 语句的解决方案感兴趣。
是否可以使用“通用”SQL 语句来执行此操作,将某种元组/复合类型数组作为过滤器参数传递?
例如,在其他 RDBMS 中,我可以用成对的值填充一个临时表,然后加入该表;或使用表值参数(在 SQL Server 中)。 Postgres + NpgSql 中是否有等价物?
PS:我在this question 中读到,在 Postgres 中为此使用临时表可能不是最佳实践
【问题讨论】:
标签: postgresql npgsql