Python Mysql: 以可能的 None 值作为参数进行查询
Python Mysql: query with possible None values as parameters
如何编写可能包含可能的 None 值作为参数的查询。 Mysql 使用 IS NULL 作为 NULL 值的运算符,但我的查询类似于
SELECT JournalID FROM Journals WHERE ISSN=?
如果 ISSN 的值为 NULL,我也需要执行查询更改 =?为空。我该怎么做?
编辑
问题不是简单的像"Use OR in where clause"。例如:
ID ISSN TITLE YEAR
1 null null "1990"
2 "a" "a" "1992"
我想使用 select 获取 ID 1。我只想知道那一行。我该怎么做?
该语句在两种情况下都必须匹配,一种是我想检索 ID 1(具有 NULL 值),另一种是我想检索 ID 2
您在寻找 OR
吗?
WHERE ISSN IS NULL OR ISSN = ?
有两种方法可以做到这一点
- 使用 if 和 else
if issn == None:
# SELECT JournalID FROM Journals WHERE ISSN IS NULL
else:
# SELECT JournalID FROM Journals WHERE ISSN = ?
- 按照下面提到的方式编写准备好的陈述
SELECT JournalID FROM Journals WHERE ((? IS NULL AND ISSN IS NULL) OR ISSN = ?)
我觉得第一种方法可读性更好
如何编写可能包含可能的 None 值作为参数的查询。 Mysql 使用 IS NULL 作为 NULL 值的运算符,但我的查询类似于
SELECT JournalID FROM Journals WHERE ISSN=?
如果 ISSN 的值为 NULL,我也需要执行查询更改 =?为空。我该怎么做?
编辑 问题不是简单的像"Use OR in where clause"。例如:
ID ISSN TITLE YEAR
1 null null "1990"
2 "a" "a" "1992"
我想使用 select 获取 ID 1。我只想知道那一行。我该怎么做? 该语句在两种情况下都必须匹配,一种是我想检索 ID 1(具有 NULL 值),另一种是我想检索 ID 2
您在寻找 OR
吗?
WHERE ISSN IS NULL OR ISSN = ?
有两种方法可以做到这一点
- 使用 if 和 else
if issn == None:
# SELECT JournalID FROM Journals WHERE ISSN IS NULL
else:
# SELECT JournalID FROM Journals WHERE ISSN = ?
- 按照下面提到的方式编写准备好的陈述
SELECT JournalID FROM Journals WHERE ((? IS NULL AND ISSN IS NULL) OR ISSN = ?)
我觉得第一种方法可读性更好