where子句中的oracle原始数据类型

时间:2010-06-23 12:01:22

标签: sql oracle

我的数据库中有一列RAW类型。我怎样才能在where子句中使用它?
即只获得第三个字节等于4的值 这不起作用:

SELECT v from T where v[3]=4

3 个答案:

答案 0 :(得分:11)

使用UTL_RAW包的功能与raws进行交互,例如:

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

答案 1 :(得分:0)

还可以使用REGEXP_LIKE函数选择具有RAW数据类型的行:

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

在我的用例中,此方法比utl_raw.substr快一点。

答案 2 :(得分:0)

Oracle 中: 您可以使用HEXTORAW函数

  • 从TBLTest01中选择*,其中(BINCOL = hextoraw('f0f0f3'))

它以另一种方式在其他数据库中。例如在 DB2 中:

  • 从TBLTest01中选择*,其中BINCOL = BINARY(x'F0F0F3')