如何在Presto中的Varchar字段中搜索文本



一个字段定义为 array(varchar)

我想搜索带有字段的记录包含特定文本模式, 'ABCD'

如果我运行此SQL:

select * from data_table 
where top_results like '%ABCD%'

它引发了此错误:

查询失败(#20190730_021145_23663_DN9FJ(:第2行:7: 喜欢表达式必须评估varchar(实际:阵列(varchar(

检测某个字符串的存在的正确语法是什么?

使用过滤器(array(t(,function(t,boolean(( - >阵列(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

希望你有这个主意。

将其转换为JSON字符串,然后搜索字符串

json_format(cast(top_results as JSON))

select * from data_table 
where json_format(cast(top_results as JSON)) like '%ABCD%'

我将使用 any_match为此:

SELECT *
FROM data_table 
WHERE any_match(top_results, s -> s like '%ABCD%')

相关内容

  • 没有找到相关文章