如何替换数据库查询中的 NULL?

How can I replace NULL in a database query?

问题是从数据库中的查询结果:

cur1 = con.cursor()
result1 = ("SELECT DDATE FROM TABLE(NULL)")
cur1.execute(result1)
result1 = cur1.fetchone()

查询结果 - 43949.0

需要把结果放在下一个查询中,替换里面的前两个"NULL"值,即select:

cur = con.cursor()
POS = (SELECT ST1,ST2 FROM SOMETABLE(**NULL**, **NULL**, NULL, NULL)")
cur.execute(POS)
POS = cur.fetchall()

结果应该是这样一个成功的请求:POS = (SELECT ST1,ST2 FROM SOMETABLE(43949.0, 43949.0, NULL, NULL)")

如果要使用第一个语句的输入执行第二个语句,可以使用 parameterized statement,并在 python 代码中将参数从第一个传递到第二个。

例如,像这样:

cur = con.cursor()
cur.execute('select output1 from step1(null)')
result1 = cur.fetchone()

cur.execute('select output1, output2 from step2(?, ?, null, null)', (result1[0], result1[0]))
result2 = cur.fetchall()

或者,您可以将存储过程连接在一起以在一个查询中执行此操作。例如:

select s2.*
from step1(null) s1
cross join step2(s1.output1, s1.output1, null, null) s2

与普通表相反,将 cross join 与存储过程一起使用不会产生叉积,而是表现为横向连接。