如何判断BigQuery中Base64编码与Unicode字符是否等价?
问题解答
一、判断字符是否等价的方法
BigQuery 里的 ~b"1" 是 Base64 解码语法,~b 会将后面的 Base64 字符串解码为原始字节并自动按 UTF-8 解析成字符串。要判断它和另外两个字符串是否等价,直接用相等运算符对比即可:
SELECT ~b"1" AS base64_decoded, code_points_to_string([0x380]) AS cp_to_str, "\u0380" AS unicode_literal, -- 直接判断是否相等 ~b"1" = code_points_to_string([0x380]) AS is_equal_1, ~b"1" = "\u0380" AS is_equal_2
运行这条语句后,通过 is_equal_1 和 is_equal_2 的布尔结果就能知道三者内容是否一致。
二、从Base64提取代码点的方法
BigQuery 没有直接从 Base64 字符串提取代码点的函数,但可以分两步实现:
- 用
~b语法或FROM_BASE64函数解码 Base64 为字符串; - 用
TO_CODE_POINTS函数将字符串转换为对应代码点数组。
示例代码:
SELECT TO_CODE_POINTS(~b"1") AS code_points_via_tilde, TO_CODE_POINTS(FROM_BASE64("1")) AS code_points_via_function
两种解码方式效果一致,最终都能得到解码后字符串的代码点数组。
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

