sql—在python的postgres表中,如果两列具有相同的字符串或列为空,则获取行

b4lqfgs4  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(221)

我在postgres11.0中有下表

col1  col2       col3          col4
1     drug       Galactose     Galactose
2     biological Galactose_1   Galactose
3     drug       Galactose     Galactose

我正在编写一个python脚本,它可以比较每行的两个列值(col3和col4),如果它们相等的话,还可以在col4为空时获取行。我可以连接到远程主机和数据库表,也可以获取行。但是比较运算符给出了语法错误。我是python新手,因此无法在代码中找到错误。

q = "select * from %s.table;" % (staging_schema)
cur.execute(q)
print("Selecting rows from test table using cursor.fetchall")
row = cur.fetchall()
countdown = len(row)

for drug in row:
    if (drug[2] == drug[3]) or (drug[3] == '')
        print(countdown, drug[0], drug[1], drug[2], drug[3])
        countdown -= 1
    else
        print('different string')

ps:我也试过药[3].isnull()。

omqzjyyz

omqzjyyz1#

让数据库来完成这项工作比提取整个表然后在应用程序代码中进行迭代和过滤更简单、更高效。
你似乎想要:

select *
from mytable
where col3 = col4 or col4 is null

这假设你的意思是 null 当你说空的时候。如果你的意思是空字符串,那么:

where col3 = col4 or col4 = ''

或者两者兼而有之:

where col3 = col4 or col4 is null or col4 = ''

相关问题