[英]Text case-insitive search with crate.io SQL
在crate database
搜索数组文本的正确SQL语法是什么?
我的示例表是:
create table
tasks(user string, entry array(object as (taskid string, eTime timestamp))).
我尝试了以下语法错误:
select * from program where any(entry['taskid']) ~* '.*cleanup.*';
ANY运算符的正确语法为:
SELECT * FROM tasks WHERE '.*cleanup.*' ~* ANY(entry['taskid']);
但是,目前不支持将PCRE
与ANY
结合使用。 另一种可能是LIKE
谓词,但是它不区分大小写(如果以通配符开头,则可能会非常慢)。
所以最终,您可以...
...或者使用lowercase
分析器在entry['taskid']
列上使用全文索引 (这可能不是最佳解决方案,因为我假设taskid
是一个单词,并且您也想按原样使用它) ,
...或将数组值拆分为单独的行,因此您将具有以下架构:
CREATE TABLE tasks (
user string,
entry OBJECT AS (
taskid STRING,
etime TIMESTAMP
)
) ...
您可以使用
SELECT * FROM tasks WHERE entry['taskid'] ~* '.*cleanup.*';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.