更新SQL表,其中字段可能为空

时间:2015-04-22 16:19:02

标签: python sql sql-server

我有一个我想每天更新的SQL表。有关需要更新的记录的数据将作为文本文件从Web中提取。我有一个Python脚本,它将读取数据,并找出需要更新的记录。

鉴于可能每天都有大量可以更新的记录,我想做类似以下的事情:

with get_connection_to('Database') as connection:
     cursor = connection.cursor()
     cursor.executemany(query, data)

该方法的问题在于任何字段都可能是NULL \ None

所以,如果我使用像

这样的查询
UPDATE TableName
SET Active = 0
WHERE Field1 = ?
    AND Field2 = ?
    AND Field3 = ?
    AND Field4 = ?
    AND Field5 = ?

然后,任何包含NULL值的记录都不会更新。

到目前为止,我提出的最好的想法是遍历每一行,检查每个元素,专门为每个更新构造SQL查询,然后分别执行每个事务。这感觉就像是一个非常不优雅,缓慢解决问题的方法。

有没有人有更好的解决方案?

1 个答案:

答案 0 :(得分:2)

UPDATE TableName
SET Active = 0
WHERE NULLIF(?,Field1) IS NULL
  AND NULLIF(?,Field2) IS NULL
  AND NULLIF(?,Field3) IS NULL
  AND NULLIF(?,Field4) IS NULL
  AND NULLIF(?,Field5) IS NULL