MySQL中的=和:=有什么区别?

时间:2013-03-25 11:47:24

标签: mysql database operators colon-equals

之间有什么区别
set test_var = 20;

set test_var:=20;

因为他们似乎都分配值

3 个答案:

答案 0 :(得分:10)

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

有效:SUM(val = 0)
无效: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 | 
+------+------+------+--------------------+

答案 1 :(得分:9)

或多或少是句法糖。

看看here

最重要的区别是

  

与=不同,:=运算符永远不会被解释为比较   运营商。这意味着你可以在任何有效的SQL语句中使用:=(不是   只是在SET语句中)为变量赋值。

答案 2 :(得分:1)

您只能使用:=进行分配 - 永远不会用于比较。它只是一些语法糖,它根本没有真正改变功能。你会从代码生成的SQL中看到很多。