小编典典

十六进制字符串到Amazon Redshift中的整数转换

sql

Amazon
Redshift基于基于Postgres的ParAccel。从我的研究看来,在Postgres中执行十六进制字符串到整数转换的首选方法是通过位字段,如本答案所述

对于bigint,这将是:

select ('x'||lpad('123456789abcdef',16,'0'))::bit(64)::bigint

不幸的是,这在Redshift上失败,原因是:

ERROR: cannot cast type text to bit [SQL State=42846]

还有哪些其他方法可以在Postgres
8.1ish中执行此转换(接近Redshift的兼容性级别)?Redshift不支持UDF,数组,正则表达式函数或集合生成函数也不支持UDF …


阅读 286

收藏
2021-03-23

共1个答案

小编典典

看起来他们为此添加了一个功能:STRTOL

句法

STRTOL(num_string,base)

返回类型

BIGINT。如果num_string为null,则返回NULL。

例如

SELECT strtol('deadbeef', 16);

返回值: 3735928559

2021-03-23