首页 > 解决方案 > 如何转换列的值,如 ALL_TAB_COLUMNS 的 HIGH_VALUE 格式

问题描述

如何转换列的值,如 oracleALL_TAB_COLUMNS(Low)HIGH_VALUE格式。

它应该调用什么函数?谢谢。

附言。HIGH_VALUE的类型是RAW(32)

输入 :

select somefuntion('xxxooo') from dual

预计:

7878786F6F6F

我已阅读 oracle 网络文档:ALL_TAB_COLUMNS

标签: sqloracle

解决方案


具有以下utl_raw.cast_to_raw()功能

select utl_raw.cast_to_raw('xxxooo') from dual;

UTL_RAW.CAST_TO_RAW('XXXOOO')
-----------------------------
7878786F6F6F

哪个与您的示例输出不匹配该虚构输入,但您似乎也虚构了输出。

作为演示:

create table t42(str) as
select 'xxxooo' from dual;

exec dbms_stats.gather_table_stats(user, 'T42');

select high_value from all_tab_columns where table_name = 'T42' and column_name = 'STR';

HIGH_VALUE                                                      
----------------------------------------------------------------
7878786F6F6F

select utl_raw.cast_to_raw(max(str)) from t42;

UTL_RAW.CAST_TO_RAW(MAX(STR))
-----------------------------
7878786F6F6F

推荐阅读