我正在尝试用 WHERE
实际上不过滤任何内容的子句。
import cx_Oracle
condition = []
# condition = ['a', 'b']
query = ("""
SELECT *
FROM table
WHERE var = {}""".format(tuple(condition)))
with cx_Oracle.connect(dsn=tsn), encoding="UTF-8")) as con:
df = pd.read_sql(con=con, sql=query)
免责声明:对sql还是有点陌生。我欣赏术语的更正
编辑:
3条答案
按热度按时间alen0pnh1#
通常使用如下逻辑处理:
yacmzcpb2#
如果您不想让where子句过滤任何内容,那么它需要包含一个始终为true的条件;像这样的
db<>在这里摆弄
sbdsn5lh3#
如果需要使用索引且列值不可为null,则需要使用
NVL
诡计。我不知道为什么,但是oracle对NVL
而不是...OR A IS NULL
表情。请看我在这里的答案,以获得由这种不同语法生成的更好的执行计划的示例。
(我说“列值不能为null”,因为
NULL = NULL
在甲骨文中不是这样的,所以NVL
如果列有空值,表达式将不起作用。我通常讨厌这些行为怪异的神秘语法,但它们有时是性能所必需的。)