字符串范围搜索RAW数据类型

时间:2014-02-06 23:14:40

标签: oracle plsql

我们使用oracle表作为简单的事件存储,在此表中我们将消息ID(使用SequentialGuidComb的.Net GUID)保存为RAW(16)。

我们正在编写一个消费应用程序,需要使用范围查询表,例如...

select *
from events
where messageid > :from and messageid <= to

问题是当Oracle将guid存储为RAW时,它似乎重新排序数据库中的字节,因此当Oracle尝试进行比较时,我们得到的结果不正确。

简单的解决方法是不使用RAW并将列更改为nvarchar,但这有效地使存储空间翻倍。

有没有办法准确执行此查询并仍然将GUID存储为RAW?

1 个答案:

答案 0 :(得分:0)

您可以使用hextoraw,例如

select *
from events
where messageid > hextoraw(:from) and messageid <= hextoraw(:to)

Docs here