问题描述
如果我的字符串列包含以下数据:
+-------+----------------------------+
| Row # | Array Column |
+-------+----------------------------+
| 1 | {apple;coconut;mango} |
| 2 | {coconut;pear;grapes} |
| 3 | {strawberry;mango;coconut} |
| 4 | {} |
| 5 | {january} |
+-------+----------------------------+
我如何只取出其中有芒果的行?
结果:
+-------+----------------------------+
| Row # | Array Column |
+-------+----------------------------+
| 1 | {apple;coconut;mango} |
| 3 | {strawberry;mango;coconut} |
| 4 | {} |
+-------+----------------------------+
解决方法
如果列是字符串而不是实际数组。
SELECT *
FROM YourTable
WHERE ArrayColumn='{}'
OR ArrayColumn like '%mango%'
如果该列确实是数组
SELECT *
FROM YourTable
WHERE size(ArrayColumn)=0
OR array_contains(ArrayColumn,'mango')