我想将十六进制字符串转换为红移位,如下所示:select 'x827ccb0eea8a706c'::bit(64)
→这个语句运行得很好。
问题是我检索'x827ccb0eea8a706c'值作为varchar/text。如果值被强制转换为字符串,我不能将其转换为位:select 'x827ccb0eea8a706c'::text::bit(64)
→不工作!
如何解决这个问题?如何将文本转换为比特?
有两个问题:
- 红移中的二进制类型称为binary或VARBYTE。
- 在Redshift中存在一个将十六进制文本转换为二进制的已有函数,称为FROM_HEX()
预期的查询可以写成:
SELECT FROM_HEX(substr(md5('12345'),1,16))::BIGINT;