从三值逻辑到二值逻辑的一般转换

时间:2019-03-20 09:42:44

标签: sql

我有一个系统使用OGC Filter Encoding(一种类似于SQL的通用过滤语言),用于查询各种后端。

当后端碰巧是一个关系数据酶时,将过滤器转换为SQL并使其在数据库中运行是很有效的。

但是,存在一个问题,OGC过滤器编码具有二值逻辑,而数据库具有三值逻辑,这导致某些过滤器返回的结果与在内存中求值的结果不同。

我目前有一个翻译系统,可以做“显而易见的”事情,也就是说,访问过滤器定义树并为比较添加空检查,以防万一过滤器的上层有否定的情况,例如将not(a = 1)变成not(a = 1 and a is not null)

我想知道是否有人找到了更通用的转换机制来将SQL语句强制转换为二值逻辑行为?

解决方案应该独立于数据库,我的目标是各种各样的数据库(Oracle,SQL Server,PostgreSQL,MySQL,db2,h2,SQLite等)。

0 个答案:

没有答案