You need to enable JavaScript to run this app. Excel实现Oracle utl_raw.cast_to_raw同效数字转RAW格式方法求助
优惠活动
大模型
产品
解决方案
定价
更多

Excel实现Oracle utl_raw.cast_to_raw同效数字转RAW格式方法求助

Excel 实现 Oracle utl_raw.cast_to_raw 等价转换方法

转换逻辑说明

纯数字字符的ASCII编码范围为0x30(对应字符'0')到0x39(对应字符'9'),Oracle的utl_raw.cast_to_raw函数的核心逻辑是逐字符取其编码值,转换为两位十六进制大写字符串拼接输出,和你观察到的“数字每一位前补3拼接”的现象完全吻合。

实现方案

方案1:高版本Excel(Microsoft 365/Excel 2021及以上)直接公式实现

假设待转换的数字/字符串存放在A1单元格,在目标单元格输入以下公式即可:

=TEXTJOIN("",TRUE,DEC2HEX(CODE(MID(A1,SEQUENCE(LEN(A1)),1)),2))

效果验证:

  • A1输入123456,公式输出313233343536,与Oracle查询结果完全一致
  • A1输入999,公式输出393939
  • A1输入56,公式输出3536

方案2:低版本Excel(Excel 2019及更早)自定义函数实现

无动态数组支持的旧版本可以通过VBA自定义函数简化操作,步骤如下:

  • 按Alt+F11唤起VBA编辑器
  • 右键点击左侧工程栏的当前工作簿名称,依次选择「插入」-「模块」
  • 在右侧代码编辑区输入以下代码:
    Function CastToRaw(TargetStr As String) As String
        Dim i As Integer, charCode As Integer
        For i = 1 To Len(TargetStr)
            charCode = Asc(Mid(TargetStr, i, 1))
            ' 转换为固定两位大写十六进制,不足补前导零,严格匹配Oracle输出格式
            CastToRaw = CastToRaw & UCase(Right("0" & Hex(charCode), 2))
        Next i
    End Function
    
  • 回到Excel界面,直接使用函数即可,比如A1存放待转换内容,在目标单元格输入=CastToRaw(A1)就能得到一致的转换结果。

注意事项

  • 所有单字节场景下的转换结果均与Oracle输出无偏差,无需额外调整格式
  • 如果需要处理中文等多字节字符,可根据实际数据库字符集(如UTF-8、GBK)调整代码中取字节编码的规则,保证和Oracle输出对齐。

内容的提问来源于stack exchange,提问作者Sankalp Kotewar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 00:15:08