Presto数组包含一个喜欢某种模式的元素

时间:2018-06-08 19:00:30

标签: sql presto

例如,我的表中的一列是一个数组,我想检查该列是否包含一个包含子字符串的元素"被拒绝" (因此"在中午12点被拒绝的元素","被管理员否定#34;将全部计算,我相信我将不得不使用"喜欢"来识别图案)。如何为此编写sql?

3 个答案:

答案 0 :(得分:6)

使用presto' array functions

  • filter(),返回满足给定条件的元素
  • cardinality(),返回数组的大小:

像这样:

where cardinality(filter(myArray, x -> x like '%denied%')) > 0

答案 1 :(得分:2)

在较新版本的 PrestoSQL (now known as Trino) 中,您可以使用 any_match 函数:

WHERE any_match(column, e -> e like '%denied%'))

答案 2 :(得分:-1)

请参见数组运算符docs here

contains(array_column,'denied')