首页 > 解决方案 > 在 SnowFlake 的特定列中查找所有具有非 ASCII 的行

问题描述

我试图在我的表中查找在 Snowflake 的特定列中具有非 ASCII 字符(一个或多个)的所有行。我尝试使用下面的查询。虽然,它没有给我想要的结果。

SELECT *
FROM table_name
WHERE column_name REGEXP '[^a-zA-Z0-9]; 

另外,我也试过这个查询:

SELECT *
  FROM tableName 
 WHERE columnToCheck <> CONVERT(columnToCheck USING ASCII)

这给了我错误,因为我不能USING在雪花中使用。

只是为了详细说明一下,我正在寻找带有 Ã、Ä、Ç、Ô、ÿ 等字符的行。要清楚,这些只是我试图找到所有行的示例更多非 ASCII 字符的情况。

标签: mysqlsqlregexsnowflake-cloud-data-platform

解决方案


如果你只是想检测一列是否有非ASCII,你可以这样做:

set MY_STRING1 = 'Hello, world';
set MY_STRING2 = 'Ãbcde';

select regexp_instr($MY_STRING1,'[^[:ascii:]]') > 0 as HAS_NON_ASCII;
select regexp_instr($MY_STRING2,'[^[:ascii:]]') > 0 as HAS_NON_ASCII;

如果你想用最接近的 ASCII 匹配替换变音符号,你可以使用这种方法:

如何替换雪花中的重音字符?


推荐阅读