Ant*_*ong 5 sql arrays presto sql-like
字段被定义为array(varchar)模式分析。
我想搜索字段包含特定文本模式的记录,说道'ABCD'。
如果我运行这个 SQL:
select * from data_table
where top_results like '%ABCD%'
Run Code Online (Sandbox Code Playgroud)
它抛出这个错误:
查询失败 (#20190730_021145_23663_dn9fj):第 2:7 行:LIKE 表达式的左侧必须计算为 varchar(实际:array(varchar)
检测某个字符串是否存在的正确语法是什么?
它返回包含函数返回 true 的元素的数组。使用基数函数检查数组是否不为空:
SELECT cardinality(filter(ARRAY ['123ABCD456', 'DQF', 'ABCD', 'ABC'], x -> x like '%ABCD%'))>0 ;
Run Code Online (Sandbox Code Playgroud)
退货
true
Run Code Online (Sandbox Code Playgroud)
检查另一个值:
SELECT cardinality(filter(ARRAY ['123ABCD456', 'DQF', 'ABCD', 'ABC'], x -> x like '%XXX%'))>0 ;
Run Code Online (Sandbox Code Playgroud)
退货
false
Run Code Online (Sandbox Code Playgroud)
希望你明白了。