如何解决SQL忽略带有WHERE IN UNNEST子句的空数组
在使用数组之前,我一直在使用此solution。
这是我的查询
SELECT * FROM listening_history WHERE
(composition_id IN (SELECT UNNEST(%(arr)s)) OR %(arr)s is NULL)
limit 50
和代码
arr = [1,2,3]
# arr = None
cursor.execute('SELECT * FROM listening_history WHERE '
'(composition_id IN (SELECT UNNEST(%(arr)s)) OR %(arr)s is NULL) '
'limit 50',{'arr': arr})
当array不为null时,这很好用,但是与通常的解决方案情况不同,在使用我的参数之前,我必须先使用unnest。因此,我收到无法执行此操作的错误
UNNEST(NULL)
如何在不使用用户定义函数的情况下忽略空数组?
解决方法
好吧,我为自己感到非常ham愧,因为在写这个问题时,我自己找到了解决方法。
您可以这样做
SELECT * FROM listening_history WHERE
(composition_id = ANY(%(arr)s) OR %(arr)s is NULL)
limit 50
我真的为自己感到羞耻
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。