为什么我在Snowflake中总是得到“函数REGEXP不支持排序规则”?[副本]

vlju58qv  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(133)
    • 此问题已在此处有答案**:

Can't escape the backslash in a regular expression?(7个回答)
20小时前关闭。
我在Snowflake中尝试正则表达式,得到“Function RLIKE does not support collation.”为什么会出现此错误?(这不是重复的正则表达式问题)。
我有一个带varchar列的Snowflake表。它有字符串和''值,但我想找到可能的''空白值。所以我试了一个这样的正则表达式:

select distinct col, count(*) cnt
from T1
where col REGEXP '^\s$'
group by col;

select col
from T1
where RLIKE (col, '*\s*');

我在REGEXP和RLIKE中得到了这个:

Function RLIKE does not support collation.

我对regexp基本上很熟悉,但这是第一次在Snowflake中使用。Snowflake文档有这样的例子,所以我不明白。我查看了表定义,此列具有

col VARCHAR(10) NOT NULL COLLATE 'en-ci',

我读了COLLATE的功能,但它仍然没有告诉我如何克服这个错误。请指示。

up9lanfz

up9lanfz1#

RLIKE-排序规则详细信息
当前不支持具有排序规则规范的参数。
参数可以转换为TEXT,但它不会保留原始列的排序规则:

WHERE RLIKE(col::TEXT, '<regexp_here>');

单引号字符串常量中的转义序列:
如果字符串常量必须包含反斜杠字符(例如,C:\(在Windows路径中为\d,在正则表达式中为\d),必须用第二个反斜杠对反斜杠进行转义。例如,要在字符串常量的正则表达式中包含\d,必须使用\\d

RLIKE (col::TEXT, '^\s$')
=>
RLIKE (col::TEXT, '^\\s$');

相关问题