FORMAT_BINARY_TO_NUMBER【暂不对外】
📄字数 1.0K
👁️阅读量 加载中...
功能描述
将二进制数据转化为指定格式的数字字符串。
提示
该函数主要用于转化系统表 SYS_STO_ZONES 的 STO_NODES 列
语法格式
sql
FORMAT_BINARY_TO_NUMBER(expr1, expr2, expr3, expr4, expr5)输入参数
expr1:BINARY类型,要转化的二进制数据;expr2:INTEGER类型,整数的字节长度,默认为4字节,例如expr2值为2时表示每两个字节解析为一个整数;expr3:INTEGER类型,偏移量,即读取下一个整数时指针移动的字节数,默认与数字长度相等(连续读取);expr4:VARCHAR类型,分隔符,默认为英文逗号;expr5:BOOLEAN类型,是否为无符号整数,true表示是无符号整型,默认为true。
输出结果
VARCHAR类型。
执行类型
| TYPE | VALUE | 说明 |
|---|---|---|
| NATIVE | 0 | 函数只能在本地计算 |
| VOLATI | 0 | 函数的每次计算值不同 |
| STABLE | 0 | 函数的每次计算值相同 |
| COMPUTE | 0 | 函数支持预计算取值 |
| NOT_CONST | 0 | 函数不支持转常数 |
| HAVE_DEF | 1 | 函数参数有默认值 |
示例
sql
-- 将二进制数据转化为数字
SQL> SELECT FORMAT_BINARY_TO_NUMBER(HEXTORAW('010000000200000003000000'), 2, 4, ',', TRUE);
+-------+
| EXPR1 |
+-------+
| 1,2,3 |
+-------+
-- 函数处理逻辑解释:
--
-- 十六进制数据:
-- 01 00 00 00 02 00 00 00 03 00 00 00
--
-- 转化为二进制数据:
-- 00000001 00000000 00000000 00000000 00000010 00000000 00000000 00000000 00000011 00000000 00000000 00000000
--
-- 按偏移量四字节划分组别:
-- 组1: 00000001 00000000 00000000 00000000
-- 组2: 00000010 00000000 00000000 00000000
-- 组3: 00000011 00000000 00000000 00000000
--
-- 每两个字节解析为整数,即提取前两个字节数据:
-- 组1: 00000001 00000000
-- 组2: 00000010 00000000
-- 组3: 00000011 00000000
--
-- 小端存储转化为易读的大端存储:
-- 组1:00000000 00000001
-- 组2:00000000 00000010
-- 组3:00000000 00000011
--
-- 转化为整数:
-- 组1: 1
-- 组2: 2
-- 组3: 3
--
-- 以分隔符','分隔组合为字符串:
-- 1,2,3