通常我们知道'='
运算符用于比较,':='
用于分配,
但与SET
一起使用时,两者都是assignment operator
为什么?
低于stored procedure
例如:
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);
我是存储过程的初学者所以在专家级别不知道
答案 0 :(得分:0)
来自John Woo的答案:
它们都是赋值运算符,但有一点我可以发现它们的区别在于=可以用来执行布尔运算,而:=不能。
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