【发布时间】:2021-02-13 07:08:32
【问题描述】:
在我开始使用数组之前,我一直在使用这个 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})
当数组不为空时,这工作得很好,但与一般解决方案不同,我必须在使用我的参数之前先使用 unnest。因此,我收到错误,无法执行此操作
UNNEST(NULL)
如果可能,如何在不使用用户定义函数的情况下忽略空数组?
【问题讨论】:
标签: python sql arrays postgresql psycopg2