一个字段被定义为 array(varchar)
在现代。
我想搜索字段包含特定文本模式的记录,说 'ABCD'
.
如果我运行此 SQL:
select * from data_table
where top_results like '%ABCD%'
它抛出这个错误:
Query failed (#20190730_021145_23663_dn9fj): line 2:7: Left side of LIKE expression must evaluate to a varchar (actual: array(varchar)
检测某个字符串是否存在的正确语法是什么?
最佳答案
使用 filter(array(T), function(T, boolean)) -> array(T)
它返回包含函数返回true的元素的数组。使用基数函数检查数组是否为空:
SELECT cardinality(filter(ARRAY ['123ABCD456', 'DQF', 'ABCD', 'ABC'], x -> x like '%ABCD%'))>0 ;
退货true
检查另一个值:SELECT cardinality(filter(ARRAY ['123ABCD456', 'DQF', 'ABCD', 'ABC'], x -> x like '%XXX%'))>0 ;
退货false
希望你有这个想法。
关于sql - 如何在 Presto 的 varchar 字段数组中搜索文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57263468/