首页 > 解决方案 > BigQuery 从列中删除 <0x00> 隐藏字符

问题描述

我有一张包含不需要的隐藏字符的表格,例如my_table

ID 水果
1 STuff1 stuff_2 ������������������������
2 Blahblah-blahblah ������������</td>
3 没有

����������������������选择此列时如何删除?

当前查询:

SELECT fruits, TRIM(REGEXP_REPLACE(fruits, r'[^a-zA-Z,0-9,-]', ' ')) AS new_fruits
FROM `project-id.MYDATASET.my_table`

这个查询太有缺陷了,因为我担心如果我不小心排除/替换了重要数据。我只想具体谈谈这个奇怪的角色。

以 csv 格式打开数据后,奇怪的字符显示为<0x00>. 我该如何解决这个问题?

标签: google-cloud-platformgoogle-bigquery

解决方案


首先你必须确定哪个是这个字符,因为它是不可打印的,这个标志只是一个随机表示。要在不删除任何其他重要信息的情况下替换它,请执行以下操作:

  • 识别字符的十六进制。从本网站上的 csv 和过去复制: 在此处输入图像描述

  • 使用 bigquery 中的 replace 函数替换此十六进制的字符,如下所示:

SELECT trim(replace(string_field_1,chr(0xfffd)," ")) FROM `<project>.<dataset>.<table>`;

在此处输入图像描述

如果您的字符结果与 fffd 不同,请将您的值放在 chr() 函数上


推荐阅读