【发布时间】:2017-09-08 09:37:11
【问题描述】:
我正在尝试使用以下 SQL 获取 oracle 表字段的高值和低值:
select display_raw(a.low_value,b.data_type) as low_val, display_raw(a.high_value,b.data_type) as high_val
from
all_tab_col_statistics a, all_tab_cols b
where
a.owner=b.owner and a.table_name=b.table_name and a.column_name=b.column_name;
当列类型为 VARCHAR2 时,上面的 SQL 只有在存储的字符串大小 32,则 display_raw 返回 null。
进一步调查发现 display_raw 仅支持大小小于 32 的 VARCHAR2。 https://github.com/gregrahn/oracle-scripts/blob/master/display_raw.sql
这背后有什么原因吗?以及如何克服这个问题并为长度超过 32 的字符串显示低值和高值?
感谢任何帮助。
【问题讨论】:
-
32K 是 Oracle 对 varchar2 长度的限制。
-
但它不适用于大小超过 32 个字符的字符串。
-
抱歉,误读了。您链接中的代码将几个变量限制为 32 个字符。不确定该函数的作用。