【问题标题】:What is the difference between = and := in MySQL?MySQL 中 = 和 := 有什么区别?
【发布时间】:2013-03-14 21:31:10
【问题描述】:

两者有什么区别

set test_var = 20;

set test_var:=20;

因为他们似乎都赋值

【问题讨论】:

    标签: mysql database operators colon-equals


    【解决方案1】:

    它们都是赋值运算符,但我发现它们的不同之处在于= 可用于执行布尔运算,而:= 不能。

    有效: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 | 
    +------+------+------+--------------------+
    

    【讨论】:

      【解决方案2】:

      或多或少是语法糖。

      看看here

      最重要的区别是

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 该死,每个人都比我强。哈。
        猜你喜欢
        • 1970-01-01
        • 2021-12-05
        • 2011-07-21
        • 1970-01-01
        • 2014-08-03
        • 2011-03-21
        • 2011-07-30
        • 2011-01-01
        相关资源
        最近更新 更多