如何在亚马逊红移中将整数转换为位字符串?



如何在 Amazon Redshift 中将无符号整数转换为二进制字符串?例如,对于数字 10,我想得到"1010"。

我找到了一个这样做的 UDF,但我宁愿不使用任何 UDF。

这可能会晚了,但请尝试FROM_VARBYTE

SELECT FROM_VARBYTE(10::VARBYTE, 'binary')
>>> 00000000000000000000000000001010

如果只需要1010部分,请尝试在末尾添加类型转换:

SELECT FROM_VARBYTE(10::VARBYTE, 'binary')::INT
>>> 1010

如果您担心结果超出默认整数的范围,请将其转换为BIGINT

SELECT FROM_VARBYTE(1023::VARBYTE, 'binary')::BIGINT
>>> 1111111111

有人编写了这个UDF的事实表明Redshift的SQL中没有内置的功能可以执行此操作。

如果不想使用 UDF,可以创建一个包含所有二进制值的查找表,然后 JOIN 到该表。这可能比重复运行 Python 函数更快,但我注意到该函数被编码为STABLE,因此它将缓存结果。

最新更新