其中一列有特殊字符需要用空格替换。 我正在使用 REGEXP_REPLACE,但抛出错误,因为列的排序规则为“en-ci”
SQL 命令:
select REGEXP_REPLACE(INPUT_STRING, '[+,()]', ' ',1,0) FROM TABLE;
下面是错误:
SQL 编译错误:error line 1 at position 7 Function REGEXP_REPLACE does not support collation.
您的建议可能会很有帮助。
谢谢。
答案 0 :(得分:0)
我确认了使用 en-ci 整理的列不适用于 REGEXP_REPLACE 的行为。我怀疑并确认 Snowflake UDF 中的 JavaScript 正则表达式替换会起作用。
我编写了一组 Snowflake UDF,以使用 JavaScript 的正则表达式尽可能接近 Snowflake 正则表达式函数的语法。这样做的目的是支持前瞻和后视,但同样的功能也将支持这个用例。
您可以在此处获取 UDF:https://github.com/GregPavlik/SnowflakeUDFs/blob/main/Regex.txt
您可以在此处获取简要文档: https://github.com/GregPavlik/SnowflakeUDFs/blob/main/RegExp2_Functions.pdf
然后,您可以通过在 Snowflake 正则表达式函数名称的末尾添加“2”来运行您的语句。然后它将使用模拟该函数行为的 UDF,但使用 JavaScript 的正则表达式:
select REGEXP_REPLACE2(INPUT_STRING, '[+,()]', ' ',1,0) FROM TABLE;
答案 1 :(得分:0)
您只需要通过将空字符串传递给 COLLATE 函数的
这适用于雪花中不支持整理的任何正则表达式相关函数:)
在你的情况下,你应该做这样的事情:
COLLATE(COLLATED_COLUMN, '')
P.S:这个很难理解,来自秘鲁的问候!