我想将我的SQl结果与预期结果进行比较,并将其显示为true或false,具体取决于结果是否匹配
预期结果实际结果(通过/失败)结果 今天的日期通过日期
答案 0 :(得分:0)
嗯,目前还不清楚你想做什么。如果您使用库或框架与您的程序集成,您所要做的就是从数据库中检索结果并使用布尔操作进行比较,如>
,<
,>=
, <=
,==
,!=
等。在if
else
这样的结构中使用此比较,您只需print
结果。< / p>
答案 1 :(得分:0)
您没有说明您的DBMS,因此这是ANSI SQL:
with expected_results (id, col1, col2) as (
values (1, 'some', 'thing'),
(2, 'another', 'value')
), actual_result (id, col2, col2) as (
select id, col1, col2
from your_table
from .... --<< add your joins
where .... --<< add your conditions
), diff (id, col1, col2) as (
select *
from expected_result
except
select *
from actual_result
union all
select *
from actual_result
except
select *
from expected_result
)
select count(*) > 0 as "Result is correct"
from diff;
第一个CTE构建您期望的结果,第二个CTE运行您的实际查询。名为diff
的CTE计算expected_result中是否存在不在actual_result中的行,并将其与actual_result中但不在expected_result中的行组合。如果该集合为空,则实际和预期结果相同。
该示例假定id
是预期结果中行的唯一标识符。
使用Postgres,您可以使用以下方法简化差异检测:
select count(*)
from actual_result ar
full outer join expected_result er on er.id = ar.id
where ar is distinct from er;
比较这样的记录不是ANSI标准SQL的一部分。