红移转换问题到位



我想将十六进制字符串转换为红移位,如下所示:select 'x827ccb0eea8a706c'::bit(64)→这个语句运行得很好。

问题是我检索'x827ccb0eea8a706c'值作为varchar/text。如果值被强制转换为字符串,我不能将其转换为位:select 'x827ccb0eea8a706c'::text::bit(64)→不工作!

如何解决这个问题?如何将文本转换为比特?

有两个问题:

  1. 红移中的二进制类型称为binary或VARBYTE。
  2. 在Redshift中存在一个将十六进制文本转换为二进制的已有函数,称为FROM_HEX()

预期的查询可以写成:

SELECT FROM_HEX(substr(md5('12345'),1,16))::BIGINT;