2014-02-06 4 views
0

Мы используем таблицу oracle в качестве простого хранилища событий, в этой таблице мы сохраняем идентификаторы сообщений (.Net GUID с помощью SequentialGuidComb) как RAW (16).Поиск по диапазону строк по типу RAW

Мы пишем потребляющего приложение, которое необходимо запросить таблицу, используя диапазон, например ...

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

Проблема заключается в том, когда Oracle хранит GUIDs как RAW, кажется, упорядочивает байтов в базе данных , поэтому, когда Oracle пытается выполнить сравнение, мы получаем неверные результаты.

Простым решением является использование RAW и изменение столбца на nvarchar, но это эффективно удваивает память.

Есть ли способ выполнить этот запрос точно и сохранить GUID как RAW?

+0

Можете ли вы предоставить нам вставить заявление? – hmmftg

+0

Сколько строк у вас будет в этой таблице? –

ответ

0

вы можете использовать hextoraw, например

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

Docs here

Смежные вопросы