为什么我们可以使用=和:=两者一起设置?

时间:2018-03-21 07:03:05

标签: mysql sql stored-procedures

通常我们知道'='运算符用于比较,':='用于分配,

但与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);

我是存储过程的初学者所以在专家级别不知道

1 个答案:

答案 0 :(得分:0)

来自John Woo的答案:

它们都是赋值运算符,但有一点我可以发现它们的区别在于=可以用来执行布尔运算,而:=不能。

valid: SUM(val = 0)
Invalid: SUM(val := 0)

FROM User-Defined Variables

还有一件事,您还可以在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