我正在使用 FastAPI 开发应用程序。它包含一个函数,该函数使用此处sqlalchemy.sql.text
所示的 将两个变量带入 SQL 查询。
SELECT ATTR3
FROM TABLE
WHERE ATTR1 = TO_NUMBER(:var1)
AND (CASE
WHEN TO_NUMBER(:var1) NOT IN (1460, 1478, 1481) THEN 'ATTR2 IS NULL'
ELSE ATTR2 = TO_NUMBER(:var2)
END);
因此,粘贴变量后,SQL 查询将如下所示
SELECT ATTR3
FROM TABLE
WHERE ATTR1 = TO_NUMBER('1460')
AND (CASE
WHEN TO_NUMBER('1460') NOT IN (1460, 1478, 1481) THEN 'ATTR2 IS NULL'
ELSE ATTR2 = TO_NUMBER('000')
END);
但是,我收到以下错误:
ORA-00905: 缺少关键字
所以,现在我想知道如何解决这个问题?以及是否可以将 CASE 语句嵌套到 WHERE 子句中?
m条SQL语句的逻辑如下:
我看过一些相关的主题,但它们没有帮助。