我有一个名为items.productName的嵌套字段,我想在其中检查产品名称是否包含特定的字符串。
SELECT * FROM test WHERE hasAny(items.productName,['Samsung'])
这仅在产品名称为Samsung时有效。
我尝试了数组连接
SELECT
*
FROM test
ARRAY JOIN items
WHERE items.productName LIKE '%Samsung%'
此方法有效,但速度很慢(500万条记录约1秒)
有没有一种方法可以像hasAny一样?
答案 0 :(得分:1)
您可以使用arrayFilter函数来实现。 ClickHouse docs
查询
Select * from test where arrayFilter(x -> x LIKE '%Samsung%', items.productName) != []
如果不使用!= [],则会收到错误消息“ DB :: Exception:过滤器列的非法类型Array(String)。必须为UInt8或Nullable(UInt8)或它们的Const变体。”