【问题标题】:What to try to get BigQuery to CAST BYTES to STRING?如何尝试让 BigQuery 将字节转换为字符串?
【发布时间】:2018-09-14 14:03:55
【问题描述】:

BigQuery Standard SQL documentation 建议可以将 BYTE 字段强制转换为 STRINGS。

我们有一个字节字段,它是使用 BigQuery 本身对字段进行 SHA256 哈希处理的结果。

我们现在想将它强制转换为 STRING,但是当我们运行“CAST(field_name to STRING)”时,我们得到一个错误:

查询失败错误:无效的字节转换为 UTF8 字符串

是什么阻止我们从这个字节字段中获取字符串?是否可以克服?如果有,解决办法是什么?

【问题讨论】:

  • 您使用的是标准 SQL 还是旧版 SQL?我对 BigQuery 的 95% 的问题都在这个领域。
  • @GordonLinoff 标准 SQL

标签: sql casting google-bigquery


【解决方案1】:

下面的例子应该告诉你一个想法

#standardSQL
WITH t AS (
  SELECT SHA256('abc') x
)
SELECT x, TO_BASE64(x)
FROM t 

简而言之 - 您可以为此使用 TO_BASE64()

【讨论】:

    【解决方案2】:

    如果您想查看字符串中哈希的“传统”表示,您必须使用 TO_HEX() 函数。

    WITH table AS (
     SELECT SHA256('abc') as bytes_field
    )
    SELECT bytes_field, TO_HEX(bytes_field) as string_field
    FROM table
    

    默认情况下,BigQuery 在 UI 中向您显示 base64 表示,但如果您想将其与其他语言的其他 sha256 函数进行比较,例如,您必须使用 TO_HEX()

    【讨论】:

      【解决方案3】:

      你可以试试 SAFE_CONVERT_BYTES_TO_STRING() 函数。

      参考:SAFE_CONVERT_BYTES_TO_STRING

      【讨论】:

        猜你喜欢
        • 2021-02-09
        • 1970-01-01
        • 2023-02-26
        • 1970-01-01
        • 1970-01-01
        • 2021-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多