【发布时间】:2017-04-22 14:19:13
【问题描述】:
我在 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
有没有办法解决这个问题?我错过了什么?
谢谢!
【问题讨论】:
-
two.regex的列类型和排序规则是什么?你能隔离出哪个值引发错误并告诉我们该值,还是所有值都出错?
标签: regex amazon-redshift literals