我们使用oracle表作为简单的事件存储,在此表中我们将消息ID(使用SequentialGuidComb的.Net GUID)保存为RAW(16)。
我们正在编写一个消费应用程序,需要使用范围查询表,例如...
select *
from events
where messageid > :from and messageid <= to
问题是当Oracle将guid存储为RAW时,它似乎重新排序数据库中的字节,因此当Oracle尝试进行比较时,我们得到的结果不正确。
简单的解决方法是不使用RAW并将列更改为nvarchar,但这有效地使存储空间翻倍。
有没有办法准确执行此查询并仍然将GUID存储为RAW?
答案 0 :(得分:0)
您可以使用hextoraw,例如
select *
from events
where messageid > hextoraw(:from) and messageid <= hextoraw(:to)