我有以下查询:
select distinct * from my_table where %s is NULL;
我希望能够将多个列名称传递给此查询,但我不知道每次要检查空值的列数。
如何使用上述查询参数技术从同一语句中进行以下查询?:
select distinct * from my_table where "col1" is NULL or "col2" is NULL;
select distinct * from my_table where "col1" is NULL or "col2" is NULL or "col3" is NULL;
我希望得到一个答案,包括能够得到以下内容,但在这种情况下没有必要:
select distinct * from my_table where "col1" is NULL;
(我正在使用Amazon Redshift,以防删除与postgresql相关的可能性)
答案 0 :(得分:1)
query = '''
select distinct *
from my_table
where
%s or
"col1" is NULL and %s or
"col2" is NULL and %s or
"col3" is NULL and %s
'''
将True
传递给您要评估的条件。假设您想要col1
和col2
中null
的任何行:
cursor.execute(query, (False, True, True, False))
如果您想要所有行:
cursor.execute(query, (True, False, False, False))
BTW双引号标识符是一个坏主意。