查找 SnowFlake 中特定列中包含非 ASCII 的所有行

QMa*_*an5 2 regex mysql sql snowflake-cloud-data-platform

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

\n
SELECT *\nFROM table_name\nWHERE column_name REGEXP '[^a-zA-Z0-9]; \n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
SELECT *\n  FROM tableName \n WHERE columnToCheck <> CONVERT(columnToCheck USING ASCII)\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

为了更详细地说明一下,我正在寻找包含 \xc3\x83、\xc3\x84、\xc3\x87、\xc3\x94、\xc3\xbf 等字符的行。需要明确的是,这些是仅作为示例,我试图查找存在一种或多种非 ASCII 字符的所有行。

\n

Gre*_*lik 5

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

\n
set MY_STRING1 = \'Hello, world\';\nset MY_STRING2 = \'\xc3\x83bcde\';\n\nselect regexp_instr($MY_STRING1,\'[^[:ascii:]]\') > 0 as HAS_NON_ASCII;\nselect regexp_instr($MY_STRING2,\'[^[:ascii:]]\') > 0 as HAS_NON_ASCII;\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n