2010-06-23 2 views
6

У меня есть столбец типа RAW в моей базе данных. Как я могу использовать его в разделе where?
т.е. получить значения только с третьего байта, равным 4.
это не работает:oracle raw datatype in where clause

SELECT v from T where v[3]=4 
+0

Retagged: - sql. – pakore

ответ

8

использовать функции UTL_RAW пакета взаимодействовать с баранами, например:

SQL> create table test (a raw(16)); 

Table created 

SQL> insert into test values ('FF00FF00FF'); 

1 row inserted 

SQL> select * from test where utl_raw.substr(a, 3, 1) = 'FF'; 

A 
-------------------------------- 
FF00FF00FF 
+0

Ссылка UTL_RAW выше дает 404. Следующая ссылка работает, хотя сегодня: https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_raw.htm#BABFGDDG – anjanb

+0

@anjanb: thanks, I'm обновил ссылку –

0

Также можно использовать функцию REGEXP_LIKE для выбора строк с типом данных RAW:

select * from test where REGEXP_LIKE(a,'^....04.*')"; 

В моем случае использования этот метод немного быстрее, чем utl_raw.substr.