使用空值执行MySQL ...?

问题描述

有什么方法可以在MysqL中设置变量,使其等于 NULL?

我正在尝试编写一个用于管理多个连接池上的持久性准备好的语句的系统。我正在直接在数据库上进行PREPARE / SET / EXECUTE。例如:

PREPARE test FROM 'SELECT * FROM users WHERE email=?';
SET @email='me@me.com';
EXECUTE test USING @email;

问题是,如果您设置@email=NULL,它将不会选择电子邮件为空的行。为此,您必须使用<=>运算符。麻烦的是,该语句只能与相等一起使用,不能使用空安全运算符:

PREPARE test FROM 'UPDATE users SET email=?';

换句话说,我需要一种方法始终在混合的准备好的语句中使用=或始终使用<=>,这些语句可能包括select / where,update / set等,因此我可以绑定任意参数都可以自由地将NULL值设置为NULL ...理想情况下,如果最终可能会绑定一个null(或非null),则消费者不需要在其WHERE中始终使用null安全相等。

所以我认为我的问题是如何定义一个变量,使其等于NULL或不等于NULL,这种方式可以在比较中使用没有空安全运算符。在MysqL中有可能吗?

编辑: 只是要添加一下,到目前为止,我能看到的唯一解决方法是尝试解析语句中的位置,找出我是在WHERE后面还是SET后面,然后在其中将=替换为前者。对于我想做的事情来说,这似乎很疯狂……

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)