BigQuery如何精准移除列中的<0x00>类隐藏特殊字符
解决方案
你导出CSV时显示的<0x00>是ASCII空字符(NULL字符,Unicode编码U+0000)的标识,只需要针对性匹配该字符删除即可,完全不需要用之前覆盖范围过宽的白名单正则,不会误删正常数据。
精准仅删除0x00空字符(推荐)
从你写的查询语句格式判断用的是BigQuery,直接用正则匹配\x00(正则中代表十六进制编码为00的字符)替换为空即可:
SELECT fruits, REGEXP_REPLACE(fruits, r'\x00', '') AS new_fruits FROM `project-id.MYDATASET.my_table`
这个写法只会删除你提到的这类异常隐藏字符,对正常的字母、数字、空格、下划线、横杠等所有可见内容都不会产生任何影响。
扩展清理所有不可见控制字符
如果后续还发现有其他类型的不可见异常控制字符需要清理,可以把匹配范围扩展到所有ASCII控制字符(编码范围0-31、127),也不会影响正常可见内容:
SELECT fruits, REGEXP_REPLACE(fruits, r'[\x00-\x1F\x7F]', '') AS new_fruits FROM `project-id.MYDATASET.my_table`
如果需要保留原字符之间的空格,上述两个写法都可以满足需求,不需要额外加TRIM,除非你确实需要去掉首尾空格。
内容的提问来源于stack exchange,提问作者user6308605
相关产品推荐
相关产品推荐

