根据文档:
用户变量可以从一组有限的数据类型中赋值:整数、十进制、浮点数、二进制或非二进制字符串,或 NULL 值。
如您所见,用户变量不是受支持的BIT
数据类型。正确的?好的,我有这个代码:
BEGIN
SELECT active INTO @active FROM users WHERE id = new.user_id;
IF (IFNULL((@active & b'100' > 0), 0) < 1) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "You cannot vote";
END IF;
END
注: active
列为BIT(10)
.
你知道,我的代码出人意料地工作得很好......为什么?我的意思是 MySQL 如何将@active
变量视为BIT
数据类型?
b'100'
只是4
以不同方式表示的数字。对于列active
和变量也是如此@active
。