BigQuery - 查找unicode字符

4
我是一名有用的助手,可以为您翻译文本。

我想构建一个查询,以查找在给定列中具有Unicode字符的记录。

我已经尝试了各种变体

SELECT col 
FROM [project:dataset.table] 
where (REGEXP_MATCH(path,r"[\u0020-\u007E]"))

似乎无法正确使用正则表达式的语法。这个特定的正则表达式会出现错误:

无法解析正则表达式 "[\u0020-\u007E]": 无效的转义序列:\u

这里阅读,似乎双引号应该启用Unicode转义。显然不是这样。

有什么建议吗?


编辑:

数据格式(大致)如下:

  • 时间戳
  • 记录ID
  • 数组 [
    • 数据分数a
    • 数据分数b ]

假设我想要找到任何包含Unicode字符的数据分数a的记录。这样说是否更有意义?

1个回答

7
尝试以下内容 - 适用于/与BigQuery标准SQL。
#standardSQL
SELECT col 
FROM `project.dataset.table` 
WHERE REGEXP_CONTAINS(path, '''[\u0020-\u007E]''')  

想象一下,我想找到包含Unicode字符的任何数据分数a的记录。
#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 AS col, ['ab!"#$%&()*+,-./', 'cd!"#$%&()*+,-./'] AS path UNION ALL
  SELECT 2, ['12,3', '456', '789'] UNION ALL
  SELECT 3, ['abc']
)
SELECT *
FROM `project.dataset.table` 
WHERE (
  SELECT COUNTIF(REGEXP_CONTAINS(path, '''[\u0020-\u0030]''')) 
  FROM UNNEST(path) AS path 
) > 0

这很酷,但是(唉),问题中的列是数组数据类型的一部分。这个查询不能处理它。我没想到会有影响,但我不知道标准 SQL 如何处理这个。 - ethrbunny
@ethrbunny - 请查看更新后的答案,其中包含我认为是您现在所要求的示例。 - Mikhail Berlyant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接