如何使用sql中的WHERE从数组中查询内容

时间:2017-11-09 03:52:28

标签: mysql sql

我尝试了下面的代码,但它不起作用。

spark.sql("""SELECT categories, business_id 
FROM business_data 
WHERE categories = 'Ice Cream'
""").show(150, truncate=False)

似乎有一种不同的方式从数组查询,但我无法弄明白。 这就是我的数据。

示例数据:

image

谢谢

2 个答案:

答案 0 :(得分:1)

通常,如果你想从数组中查询某些东西,你会使用array_contains,如下:

SELECT business_id, categories
FROM business_data
WHERE array_contains(categories,'Ice Cream & Frozen Yogurt')

答案 1 :(得分:1)

MySQL特定: FIND_IN_SET(str,strlist)

来自DOCS:

如果字符串str位于由N个子字符串组成的字符串列表strlist中,则返回1到N范围内的值。字符串列表是由字符串分隔的子字符串组成的字符串。如果第一个参数是常量字符串而第二个参数是SET类型的列,则FIND_IN_SET()函数被优化为使用位算术。如果str不在strlist中,或者strlist是空字符串,则返回0。如果任一参数为NULL,则返回NULL。如果第一个参数包含逗号(,)字符,则此函数无法正常工作。

min()

所以在你的情况下...

baby.min2 = function(x, ...) -max(-x, ...) # also handles na.rm
baby.min3 = function(x) x[order(x)][1]
baby.min4 = function(x) x[which.min(x)]