Python中的SQL查询,其中Value可以是None/Nu

2024-03-28 14:54:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个Python脚本来分析一些数据,这些数据来自几个不同的SQL数据库。对数据库的查询基于以前查询的结果,对不同的数据库进行查询。在

我遇到的问题是有些查询可能返回NULL。在

所以,如果我有一个像

SELECT *
FROM table_name
WHERE fieldA = ?
AND fieldB = ?

我有两个从其他查询返回的值;field_a = 'A'和{},当我尝试用Python执行查询时:

^{pr2}$

什么也不返回。如果我更改SQL查询以便将None/Null值硬编码:

SELECT *
FROM table_name
WHERE field_a = ?
AND field_b IS NULL

我得到了我期望的数据。在

除了基于字段值从子字符串构建SQL查询之外,还有没有更好的方法来处理这个问题?在


Tags: and数据namefrom脚本数据库fieldsql
2条回答

我猜none在编译成SQL时会被转换成null。因为null永远不能等于任何东西(甚至不能等于另一个null),所以您必须像硬编码该值时那样使用is null。如果你想两者兼得呢?我要做的就是用这样的方法控制空值的可能性:

and field_b = isnull(?, '')

当然,这有一个漏洞,如果field_b实际上是一个空字符串,那么当您不希望它出现时,它将等同于它。根据这是否是一个问题,您还可以创造性地使用case语句或or条件。在

尝试使用或

    SELECT *
    FROM table_name
    WHERE (field_a = ? AND field b IS NULL)
    OR (field_a IS NULL AND field b  = ?)
    OR (field_a = ? AND field b  = ?)

希望这有帮助!在

相关问题 更多 >