Google BigQuery中的FROM_HEX返回的结果与公共文档中的结果不同

时间:2018-12-07 11:54:27

标签: google-bigquery

我很难使用该功能,但该功能似乎无法按照Google BigQuery(标准语法)reference中的规定运行。这应该是这样的:

WITH Input AS (SELECT '00010203aaeeefff' AS hex_str)
SELECT hex_str, FROM_HEX(hex_str) AS bytes_str
FROM Input;

hex_str          | bytes_str
0AF              | \x00\xaf

我真正看到的是:

hex_str          | bytes_str
0AF              | AK8=

显然不一样,但是我不知道为什么。可能是某些未指定的GBQ编码设置-我完全遵循该参考。

有人遇到过吗?

2 个答案:

答案 0 :(得分:0)

尝试以下操作:

WITH Input AS (
  SELECT '00010203aaeeefff' AS hex_str UNION ALL
  SELECT '0AF' UNION ALL
  SELECT '666f6f626172'
)
SELECT hex_str, FROM_HEX(hex_str) AS bytes_str, FORMAT("%t", FROM_HEX(hex_str)) AS format_string
FROM Input;

希望有帮助。

答案 1 :(得分:0)

我怀疑您看到的是BigQuery UI显示BYTES值的base64编码,因此结果似乎不正确。您可以做的是将BYTES值转换为字符串以显示它们:

WITH Input AS (SELECT '00010203aaeeefff' AS hex_str)
SELECT hex_str, SAFE_CONVERT_BYTES_TO_STRING(FROM_HEX(hex_str)) AS bytes_str
FROM Input;