写点什么

YashanDB|BIN 函数详解:如何把数据转成二进制表示?

作者:数据库砖家
  • 2025-05-06
    广东
  • 本文字数:752 字

    阅读完需:约 2 分钟

在某些业务场景中,开发者可能希望以二进制形式查看数值的底层表示。YashanDB 提供了 BIN(expr) 函数,用于将一个值转换为其对应的 64 位二进制字符串,并以 VARCHAR 类型返回,方便后续使用或展示。

一、函数用途

BIN(expr) 的作用是:

将输入表达式转换为二进制(BIT)格式的字符串

转换后的结果是 VARCHAR 类型,展示的是对应数值的二进制表示。

二、支持的数据类型

数值类型(如 INT、NUMBER);

可以转换为 NUMBER 类型的字符串;

RAW 或 LOB 类型(长度受限);

不支持以下类型:

XMLTYPE、JSON 类型;

超过 32000 字节的 LOB 数据。

三、处理规则说明

① 带小数的值

自动截断小数位,只保留整数部分参与转换。

② 负数处理

返回其 64 位补码 表示。

③ 二进制字符串支持

支持以 b'...' 形式传入二进制文本,如 b'010010',但需符合 BIT 类型长度限制。

④ 非合法输入处理

若无法转换为 NUMBER,则返回类型转换错误;

若字符不为 0/1(或非 NULL/合法二进制字面量),则返回 invalid string 错误;

输入为 NULL 时,结果也是 NULL。

四、常见示例

-- 示例 1:将浮点数转为二进制(小数部分被截断)SELECT BIN('2345.34') AS res FROM DUAL;-- 输出:100100101001-- 示例 2:二进制字符串作为输入SELECT BIN(b'0100101010') AS res FROM DUAL;-- 输出:100101010-- 示例 3:负数转为 64 位补码SELECT BIN(-235) AS res FROM DUAL;-- 输出:111111...1100010101 (共 64 位)
复制代码

五、适用场景

数据调试:查看整数、标志位的底层二进制表示;

编解码:在需与位运算或硬件通信相关的业务中预处理数据;

可视化展示:将数值数据以 BIT 格式展现在报表或系统日志中。

小结建议

使用 BIN 函数前,确保输入值能正确转换为 NUMBER;

对于字符串、LOB 类型等,建议先用 TO_NUMBER 明确测试;

若涉及负数,需理解其补码形式,尤其在与其他系统对接时。

用户头像

还未添加个人签名 2025-04-09 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB|BIN 函数详解:如何把数据转成二进制表示?_数据库_数据库砖家_InfoQ写作社区