一般我们知道'='
操作符用于比较,':='
操作符用于赋值,
但是当与 SET
一起使用时,两者都作为 assignment operator
为什么?
低于存储过程
例如:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `substringExample`()
BEGIN
DECLARE x varchar(7);
DECLARE num int;
DECLARE inc int;
SET inc:= 1;
WHILE inc<1400 DO
SELECT SUBSTRING(USER_TEMP_NUM, 8, 13) AS ExtractString
INTO x FROM USER_REGISTRATION_DETAILS where sl_no=inc;
SET num= CONVERT(x,int);
IF (num%2=0) THEN
SELECT num;
END IF;
SET inc:=inc+1;
END WHILE;
END$$
DELIMITER ;
在上面的代码中,SET num= CONVERT(x,int);
给出了正确的输出以及 SET num:= CONVERT(x,int);
我是存储过程的初学者,所以不知道专家级别
最佳答案
来自 John Woo的回答:
它们都是赋值运算符,但我能发现它们的区别是 = 可用于执行 bool 运算,而 := 不能。
valid: SUM(val = 0)
Invalid: SUM(val := 0)
此外,您还可以在 SET 以外的语句中为用户变量赋值。在这种情况下,赋值运算符必须是 := 而不是 =,因为后者在非 SET 语句中被视为比较运算符 =。
mysql> SET @t1=1, @t2=2, @t3:=4;
mysql> SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;
+------+------+------+--------------------+
| @t1 | @t2 | @t3 | @t4 := @t1+@t2+@t3 |
+------+------+------+--------------------+
| 1 | 2 | 4 | 7 |
+------+------+------+--------------------+
同时检查这个链接,希望对你有帮助,
What is the difference between := and = mysql assignment operator
关于mysql - 为什么我们可以使用 = 和 := both with set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49400132/