【发布时间】:2013-03-14 21:31:10
【问题描述】:
两者有什么区别
set test_var = 20;
和
set test_var:=20;
因为他们似乎都赋值?
【问题讨论】:
标签: mysql database operators colon-equals
两者有什么区别
set test_var = 20;
和
set test_var:=20;
因为他们似乎都赋值?
【问题讨论】:
标签: mysql database operators colon-equals
它们都是赋值运算符,但我发现它们的不同之处在于= 可用于执行布尔运算,而:= 不能。
有效:SUM(val = 0)
无效: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 |
+------+------+------+--------------------+
【讨论】:
或多或少是语法糖。
看看here
最重要的区别是
与 = 不同,:= 运算符永远不会被解释为比较 操作员。这意味着您可以在任何有效的 SQL 语句中使用 :=(不是 只是在 SET 语句中)为变量赋值。
【讨论】:
您只能使用 := 进行赋值 - 绝不能用于比较。它只是一点语法糖,根本没有真正改变功能。您会在从代码生成的 SQL 中看到很多。
【讨论】: