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



set test_var = 20;

set test_var:=20;

,因为它们似乎都赋值 ?

这或多或少是语法糖

看这里

最重要的区别是

与=不同,:=操作符永远不会被解释为比较操作操作符。这意味着您可以在任何有效的SQL语句中使用:=(仅在SET语句中)将值赋给变量。

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

valid: SUM(val = 0)
无效:SUM(val:= 0)

FROM用户定义变量

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

只能在赋值时使用:=,而不能在比较时使用。这只是一点语法糖,它根本不会改变功能。您将在代码生成的SQL中看到很多。

SETSELECT语句中使用:=被解释为赋值。

SET语句中使用=被解释为赋值。

然而,

SELECT语句中使用=被解释为bool操作符(比较)。

所以如果你指的是赋值,使用:=

总是安全的

相关内容

  • 没有找到相关文章

最新更新