【问题标题】:Convert string -> binary -> integer in snowflake在雪花中转换字符串 -> 二进制 -> 整数
【发布时间】:2021-11-13 15:44:18
【问题描述】:

我正在尝试将字符串转换为其二进制表示形式,并最终在 Snowflake 中转换为整数,但我无法使用 TO_BINARY::BINARY(<n>) 获得所需的结果。例如,我可以使用以下代码在 postgres 中做我想做的事情

SELECT ('x' || 'abcd')::BIT(32)

根据需要返回10101011110011010000000000000000

我想在 Snowflake 中获得相同的结果,但不能。我已经尝试了以下两种方法,但只是返回了相同的字符串(例如,ABCD 作为输出返回)

SELECT TO_BINARY('abcd')
...
SELECT 'abcd'::BINARY(32)

【问题讨论】:

  • 你还有更多的例子吗?最终目标是什么?所有字符串都最多 32 位吗?

标签: binary type-conversion snowflake-cloud-data-platform sqldatatypes


【解决方案1】:

我正在尝试将字符串转换为其二进制表示形式,并且 最终是雪花中的一个整数

如果您需要在 Snowflake 中将十六进制值转换为整数,这很简单:

select TO_NUMBER( 'abcd', 'XXXX' );

43981

如果您需要将十六进制值转换为位,Snowflake 没有原生函数,但可以编写 JavaScript 函数:

create or replace function convert_to_bits( decimal_value float, size float )
returns string
language javascript
as $$
  var res = parseInt(DECIMAL_VALUE).toString(2);
  return res + "0".repeat( SIZE - res.length );
$$;

select convert_to_bits(TO_NUMBER( 'abcd', 'XXXX' ), 32) ;

10101011110011010000000000000000

【讨论】:

    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2018-03-01
    • 1970-01-01
    • 2018-07-07
    • 2019-07-30
    相关资源
    最近更新 更多