gpt4 book ai didi

regex - 使用 Redshift 中列中的正则表达式

转载 作者:行者123 更新时间:2023-12-02 14:21:37 27 4
gpt4 key购买 nike

我在 Redshift 中有 2 个表,其中一个有一列包含正则表达式字符串。我想像这样加入他们:

select *
from one o
join two t
on o.value ~ t.regex

但是这个查询抛出一个错误:

[Amazon](500310) Invalid operation: The pattern must be a valid UTF-8 literal character expression
Details:
-----------------------------------------------
error: The pattern must be a valid UTF-8 literal character expression
code: 8001
context:
query: 412993
location: cgx_impl.cpp:1911
process: padbmaster [pid=5211]
-----------------------------------------------;

据我在文档中搜索的了解,正则表达式运算符 ~ 的右侧必须是字符串文字。

所以这会起作用:

select *
from one o
where o.value ~ 'regex'

这会失败:

select *
from one o
where 'regex' ~ o.value

有什么办法可以解决这个问题吗?我错过了什么吗?

谢谢!

最佳答案

这是我正在使用的解决方法。也许它不是 super 快,但它有效:

首先创建一个函数:

CREATE FUNCTION is_regex_match(pattern text, s text) RETURNS BOOLEAN IMMUTABLE AS $$
import re
return True if re.search(pattern, s) else False
$$ LANGUAGE plpythonu;

然后像这样使用它(o.value 包含正则表达式模式):

select *
from one o
where is_regex_match(o.value, 'some string');

关于regex - 使用 Redshift 中列中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41020852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com