所以,我有一个关于以下架构的表
user_id int,
movie_id int,
score float,
demography string
人口统计是逗号分隔的字符串
比如'm,22,ca,.....'
。这可能包含可变数量的元素。
现在,我想基于某些特征来过滤记录...... 如果人口统计学是" m"或来自" ca"等等.. 所以,目前我正在做的是......
将字符串拆分为数组(split(table.demography, "\\,"))
,然后将explode
拆分并使用where子句进行过滤..
Where exploded_demography = 'm' or exploded_demography='ca' (etc etc)
但是,爆炸导致记录......好......爆炸......我试图避免这种情况,因为它似乎膨胀了记录的数量..
有没有办法可以在不爆炸记录的情况下做到这一点?
答案 0 :(得分:1)
尝试使用:
find_in_set('ca', table.demography) > 0
int find_in_set(string str,string strList)返回第一个 strList中str的出现,其中strList是逗号分隔的字符串。 如果任一参数为null,则返回null。如果是第一个,则返回0 参数包含任何逗号。例如,find_in_set(' ab', ' abc,b,ab,c,def')返回3.