2010-06-23 28 views
6

Tôi có một cột loại RAW trong cơ sở dữ liệu của mình. Làm thế nào tôi có thể sử dụng nó trong mệnh đề where?
tức là để có được chỉ có giá trị với byte thứ ba bằng 4.
này không làm việc:oracle raw datatype trong đó khoản

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

Đã gắn thẻ lại: - sql. – pakore

Trả lời

8

sử dụng các chức năng của gói UTL_RAW để tương tác với RAWS, ví dụ:

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

Liên kết UTL_RAW ở trên cung cấp 404. Liên kết sau hoạt động, mặc dù hôm nay: https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_raw.htm#BABFGDDG – anjanb

+0

@anjanb: cảm ơn, tôi đã đã cập nhật liên kết –

0

Bạn cũng có thể sử dụng chức năng REGEXP_LIKE để chọn các hàng có kiểu dữ liệu RAW:

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

Trong trường hợp sử dụng của tôi, phương thức này nhanh hơn utl_raw.substr một chút.

Các vấn đề liên quan