В моей базе данных есть столбец типа RAW. Как я могу использовать его в предложении where? т.е. получить только значения с третьим байтом, равным 4. это не работает:
SELECT v from T where v[3]=4
использует функции пакета 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
в Oracle : Вы можете использовать HEXTORAW функция
это в других базах данных по-другому. например, в DB2 :
Можно также использовать функцию REGEXP_LIKE для выбора строк с типом данных RAW:
select * from test where REGEXP_LIKE(a,'^....04.*')";
В моем случае этот метод немного быстрее, чем utl_raw.substr.