如何在Snowflake中实现字符串转二进制再转整数,兼容Postgres BIT转换效果
你之前调用TO_BINARY或者强制转BINARY类型时没有指定输入格式,Snowflake默认会将输入字符串按UTF-8编码转换为二进制,而非将字符串内容视为十六进制字面量解析,这是输出不符合预期的核心原因。
实现步骤
- 调用
TO_BINARY时指定第二个参数为HEX,将输入的十六进制字符串解析为对应二进制值 - 若要得到32位的01格式比特串,可将二进制转数值后再转二进制字符串,最后补位到指定长度
可直接运行的示例代码
-- 得到你预期的32位比特串结果 SELECT RPAD(BIN(TO_NUMBER(TO_BINARY('abcd', 'HEX'))), 32, '0') AS target_bit_str;
运行后输出结果为:10101011110011010000000000000000,和Postgres中的执行结果完全一致。
如果需要直接转成整数
不需要中间转比特串,直接调用即可得到对应十进制整数值:
SELECT TO_NUMBER(TO_BINARY('abcd', 'HEX')) AS target_int;
运行后输出结果为:43981
内容的提问来源于stack exchange,提问作者Zeph Schafer
相关产品推荐
相关产品推荐

