Oracle基本資料型別儲存格式淺析(五)——RAW型別
Oracle基本資料型別儲存格式淺析(五)——RAW型別
和其他資料型別相比,RAW型別的儲存顯得直觀多了,它和SELECT時資料展示的值完全一樣。(SELECT時是按照16進位制展示的)
SQL> create table test_raw (id number, raw_date raw(10));
表已建立。
SQL> insert into test_raw values (1, hextoraw('ff'));
已建立 1 行。
SQL> drop table test_raw;
表已丟棄。
SQL> create table test_raw (raw_col raw(10));
表已建立。
SQL> insert into test_raw values (hextoraw('ff'));
已建立 1 行。
SQL> insert into test_raw values (hextoraw('0'));
已建立 1 行。
SQL> insert into test_raw values (hextoraw('23fc'));
已建立 1 行。
SQL> insert into test_raw values (hextoraw('fffffffffff'));
已建立 1 行。
SQL> insert into test_raw values (hextoraw('ffffffffffffffffffff'));
已建立 1 行。
SQL> insert into test_raw values (utl_raw.cast_to_raw('051'));
已建立 1 行。
SQL> select raw_col, dump(raw_col, 16) dump_raw from test_raw;
RAW_COL DUMP_RAW
-------------------- -----------------------------------------------
FF Typ=23 Len=1: ff
00 Typ=23 Len=1: 0
23FC Typ=23 Len=2: 23,fc
0FFFFFFFFFFF Typ=23 Len=6: f,ff,ff,ff,ff,ff
FFFFFFFFFFFFFFFFFFFF Typ=23 Len=10: ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
303531 Typ=23 Len=3: 30,35,31
已選擇6行。
RAW型別的儲存很簡單,對比欄位的查詢結果和DUMP的結果就一目瞭然了。
需要注意的是,兩種轉化為RAW的函式之間的差別。當使用HEXTORAW時,會把字串中資料當作16進位制數。而使用UTL_RAW.CAST_TO_RAW時,直接把字串中每個字元的ASCII碼存放到RAW型別的欄位中。
SQL> insert into test_raw values ('gg');
insert into test_raw values ('gg')
*
ERROR 位於第 1 行:
ORA-01465: 無效的十六進位制數字
SQL> insert into test_raw values (hextoraw('gg'));
insert into test_raw values (hextoraw('gg'))
*
ERROR 位於第 1 行:
ORA-01465: 無效的十六進位制數字
SQL> insert into test_raw values (utl_raw.cast_to_raw('gg'));
已建立 1 行。
SQL> select raw_col, dump(raw_col, 16) dump_raw from test_raw;
RAW_COL DUMP_RAW
-------------------- ----------------------------------------------
FF Typ=23 Len=1: ff
00 Typ=23 Len=1: 0
23FC Typ=23 Len=2: 23,fc
6767 Typ=23 Len=2: 67,67
0FFFFFFFFFFF Typ=23 Len=6: f,ff,ff,ff,ff,ff
FFFFFFFFFFFFFFFFFFFF Typ=23 Len=10: ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
303531 Typ=23 Len=3: 30,35,31
已選擇7行。
SQL> create table test_raw (id number, raw_date raw(10));
表已建立。
SQL> insert into test_raw values (1, hextoraw('ff'));
已建立 1 行。
SQL> drop table test_raw;
表已丟棄。
SQL> create table test_raw (raw_col raw(10));
表已建立。
SQL> insert into test_raw values (hextoraw('ff'));
已建立 1 行。
SQL> insert into test_raw values (hextoraw('0'));
已建立 1 行。
SQL> insert into test_raw values (hextoraw('23fc'));
已建立 1 行。
SQL> insert into test_raw values (hextoraw('fffffffffff'));
已建立 1 行。
SQL> insert into test_raw values (hextoraw('ffffffffffffffffffff'));
已建立 1 行。
SQL> insert into test_raw values (utl_raw.cast_to_raw('051'));
已建立 1 行。
SQL> select raw_col, dump(raw_col, 16) dump_raw from test_raw;
RAW_COL DUMP_RAW
-------------------- -----------------------------------------------
FF Typ=23 Len=1: ff
00 Typ=23 Len=1: 0
23FC Typ=23 Len=2: 23,fc
0FFFFFFFFFFF Typ=23 Len=6: f,ff,ff,ff,ff,ff
FFFFFFFFFFFFFFFFFFFF Typ=23 Len=10: ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
303531 Typ=23 Len=3: 30,35,31
已選擇6行。
RAW型別的儲存很簡單,對比欄位的查詢結果和DUMP的結果就一目瞭然了。
需要注意的是,兩種轉化為RAW的函式之間的差別。當使用HEXTORAW時,會把字串中資料當作16進位制數。而使用UTL_RAW.CAST_TO_RAW時,直接把字串中每個字元的ASCII碼存放到RAW型別的欄位中。
SQL> insert into test_raw values ('gg');
insert into test_raw values ('gg')
*
ERROR 位於第 1 行:
ORA-01465: 無效的十六進位制數字
SQL> insert into test_raw values (hextoraw('gg'));
insert into test_raw values (hextoraw('gg'))
*
ERROR 位於第 1 行:
ORA-01465: 無效的十六進位制數字
SQL> insert into test_raw values (utl_raw.cast_to_raw('gg'));
已建立 1 行。
SQL> select raw_col, dump(raw_col, 16) dump_raw from test_raw;
RAW_COL DUMP_RAW
-------------------- ----------------------------------------------
FF Typ=23 Len=1: ff
00 Typ=23 Len=1: 0
23FC Typ=23 Len=2: 23,fc
6767 Typ=23 Len=2: 67,67
0FFFFFFFFFFF Typ=23 Len=6: f,ff,ff,ff,ff,ff
FFFFFFFFFFFFFFFFFFFF Typ=23 Len=10: ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
303531 Typ=23 Len=3: 30,35,31
已選擇7行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12801008/viewspace-607646/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle基本資料型別儲存格式淺析——RAW型別Oracle資料型別
- Oracle基本資料型別儲存格式淺析[zt]Oracle資料型別
- Oracle基本資料型別儲存格式淺析(四)——ROWID型別Oracle資料型別
- Oracle基本資料型別儲存格式淺析(三)——日期型別(一)Oracle資料型別
- Oracle基本資料型別儲存格式淺析(三)——日期型別(二)Oracle資料型別
- Oracle基本資料型別儲存格式淺析(三)——日期型別(三)Oracle資料型別
- Oracle基本資料型別儲存格式淺析(三)——日期型別(四)Oracle資料型別
- Oracle基本資料型別儲存格式淺析(二)——數字型別Oracle資料型別
- Oracle Lob型別儲存淺析Oracle型別
- Oracle的raw資料型別Oracle資料型別
- Oracle Xmltype型別淺析OracleXML型別
- Oracle 儲存型別Oracle型別
- oracle資料型別與儲存結構Oracle資料型別
- MYSQL 資料型別儲存-數值型MySQL 資料型別
- 基本資料型別與字串型別資料型別字串
- js資料型別之基本資料型別和引用資料型別JS資料型別
- JavaScript中的資料型別-儲存差別JavaScript資料型別
- 基本資料型別資料型別
- double型別資料在記憶體中中儲存格式型別記憶體
- Timestamp型別淺析型別
- redis-4.資料儲存型別Redis型別
- MYSQL-資料型別儲存-DATEMySql資料型別
- Redis(一):基本資料型別與底層儲存結構Redis資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- 【MySQL】時間型別儲存格式選擇MySql型別
- 淺談oracle複合資料型別Oracle資料型別
- JavaScript基本資料型別JavaScript資料型別
- Java 基本資料型別Java資料型別
- Redis基本資料型別Redis資料型別
- Java -基本資料型別Java資料型別
- 003基本資料型別資料型別
- Java基本資料型別Java資料型別
- MySQL基本資料型別MySql資料型別
- PHP memcached 各種資料型別儲存PHP資料型別
- 淺析number型別的值型別
- 淺析NAT的型別-ZT型別
- Java中的基本資料型別與引用資料型別Java資料型別
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數