Оракул сырой тип данных в где пункт - PullRequest
8 голосов
/ 23 июня 2010

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

SELECT v from T where v[3]=4

Ответы [ 3 ]

11 голосов
/ 23 июня 2010

использует функции пакета 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 голосов
/ 17 июня 2019

в Oracle : Вы можете использовать HEXTORAW функция

  • выберите * из TBLTest01, где (BINCOL = hextoraw ('f0f0f3')) *

это в других базах данных по-другому. например, в DB2 :

  • выберите * из TBLTest01, где BINCOL = BINARY (x'F0F0F3 ')
0 голосов
/ 30 июня 2010

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

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

В моем случае этот метод немного быстрее, чем utl_raw.substr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...