Convert

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

dba_tab_col_statistics 视图 LOW_VALUE 和 HIGH_VALUE 值转换

How To Set Column Statistics (MIN/MAX) Manually Using SET_COLUMN_STATS (Doc ID


2515041.1)
利用 utl_raw.cast_to_number 包
--如下为转换为 varchar2 类型示例
select utl_raw.cast_to_varchar2('6C69756A69616F5F31')
min_,utl_raw.cast_to_varchar2('6C69756A69616F5F39393939') max_ from dual;
select to_char(utl_raw.cast_to_varchar2('5741')) val from dual;
--如下为转换为 number 类型示例
select utl_raw.cast_to_number('C102') min_,utl_raw.cast_to_number('C106') max_ from
dual;
select to_char(utl_raw.cast_to_number('C111')) val from dual;
--如下为转换为 date 类型
select to_char(1780+to_number(substr('7877020B010101',1,2),'XX')
+to_number(substr('7877020B010101',3,2),'XX'))||'-'
||to_number(substr('7877020B010101',5,2),'XX')||'-'
||to_number(substr('7877020B010101',7,2),'XX')||' '
||(to_number(substr('7877020B010101',9,2),'XX')-1)||':'
||(to_number(substr('7877020B010101',11,2),'XX')-1)||':'
||(to_number(substr('7877020B010101',13,2),'XX')-1) dat_v from dual;

SQL> select min(DATA_OBJECT_ID) min_, max(DATA_OBJECT_ID) max_ from


dean.T_acs_TEST;

MIN_ MAX_
---------- ----------
1 5

SET LINE 200


col table_name for a15
col LOW_VALUE for a25
col HIGH_VALUE for a25
col COLUMN_NAME for a20
col HISTOGRAM for a10
select a.table_name,a.COLUMN_NAME,t.num_rows,
a.num_distinct,
a.low_value,
a.high_value,
a.density,
a.num_nulls,
a.histogram
from dba_tab_col_statistics a
join dba_tables t
on a.owner = t.owner
and a.table_name = t.table_name
where a.owner = upper('&owner')
and a.table_name=upper('&table_name');

NUM_ROWS NUM_DISTINCT LOW_VALUE HIGH_VALUE


----- ---------- ------------ -----------------
8017 20 C102 C115
8017 5 C102 C106

SQL> select utl_raw.cast_to_number('C102') min_,utl_raw.cast_to_number('C106') max_


from dual;
MIN_ MAX_
---------- ----------
1 5

SQL> select utl_raw.cast_to_varchar2 ( '303030303131363634353934353634303931' )


from dual;

UTL_RAW.CAST_TO_VARCHAR2('303030303131363634353934353634303931')
--------------------------------------------------------------------------------
000011664594564091

SQL> select utl_raw.cast_to_varchar2 ( '7A7A757938394D436E41314E6F30' ) from dual;

UTL_RAW.CAST_TO_VARCHAR2('7A7A757938394D436E41314E6F30')
--------------------------------------------------------------------------------
zzuy89MCnA1No0

SQL> create or replace function CAST_TO_DATE(bdr in raw) return date deterministic


is
begin
return
date'1-1-1'
+ NUMTOYMINTERVAL(
100 * (to_number(substr(bdr,1,2), 'xx') - 100) +
to_number(substr(bdr,3,2), 'xx') - 101,
'year')
+ NUMTOYMINTERVAL(to_number(substr(bdr,5,2), 'xx')-1, 'month')
+ NUMTODSINTERVAL(to_number(substr(bdr,7,2), 'xx')-1, 'day')
+ NUMTODSINTERVAL(to_number(substr(bdr,9,2), 'xx') - 1, 'hour')
+ NUMTODSINTERVAL(to_number(substr(bdr,11,2), 'xx') - 1, 'minute')
+ NUMTODSINTERVAL(to_number(substr(bdr,13,2), 'xx') - 1, 'second');
exception when others then return to_date(1, 'J');
end CAST_TO_DATE;
/ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Function created.

SQL> select to_char(cast_to_date('787A0A01010101' ),'YYYY-MM-DD HH24:MI:SS') from


dual;

TO_CHAR(CAST_TO_DAT
-------------------
2022-10-01 00:00:00

SQL> select to_char(cast_to_date('787A0C1B03251F' ),'YYYY-MM-DD HH24:MI:SS') from


dual;

TO_CHAR(CAST_TO_DAT
-------------------
2022-12-27 02:36:30

与优化器相关参数
col VALUE for a15
col NAME for a55
set pages 1000
set lines 1000
select
NAME,TYPE,VALUE,ISSES_MODIFIABLE,ISSYS_MODIFIABLE,ISINSTANCE_MODIFIABLE,ISMODIFIED,
ISADJUSTED from v$parameter
where NAME in
('_optim_peek_user_binds','_optimizer_adaptive_cursor_sharing','_optimizer_extended
_cursor_sharing','_optimizer_extended_cursor_sharing_rel');

You might also like