【问题标题】:How can I use a variable inside the where clause?如何在 where 子句中使用变量?
【发布时间】:2022-01-31 12:11:06
【问题描述】:

假设我有四个名为 a、b、c、d 的变量,我从用户那里得到输入,我想在我的应用程序中进行这样的查询:

Select * 
from TABLE 
where (TABLE.FIELD = 'a' OR a = null) 
AND (TABLE.FIELD = 'b' OR b = null) ..

有没有办法像这样在查询中绑定我的变量?我正在使用 MySQL 和 Python。

提前致谢

【问题讨论】:

  • 这并不是我想要达到的目标。这个例子展示了如何动态地将值传递给 SQL 查询,而我想对 where 子句中的变量进行空检查。
  • 您要在子句中分配变量吗?通常,您只需在查询之外使用 SET,然后在查询子句中检查该变量。
  • 不完全是赋值,而是在查询语句中有一个 if 子句。 a 的值不会为空。

标签: python mysql


【解决方案1】:

您可以在查询之外使用 SET 分配变量,具体取决于您接收用户输入的方式。 然后用 IS NULL 检查查询中的变量:

SET @a := my_val;

SELECT * 
FROM TABLE 
WHERE (TABLE.FIELD = @a OR @a IS NULL)...;

这样做,在变量 a 为空的情况下,您将从查询中获取整个表。

您还可以创建一个存储过程,在查询之前检查变量是否为空。例如,在存储过程中,您可以使用 if 条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2022-11-18
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多