В чем разница между = и:= в MySQL?

в чем разница между

set test_var = 20;

и

set test_var:=20;

как они оба, кажется присвоить значение ?

3 ответов


оба операторы присваивания но одно я могу найти их различия в том, что = может использоваться для выполнения логической операции, в то время как := не может.

действительный: SUM (val = 0)
Неверно: SUM (val := 0)

из пользовательских переменных

еще одна вещь, вы также можете назначить значение переменной пользователя в операторах, отличных от SET. В этом случае, оператор присваивания должен be: = и not = потому что последний рассматривается как оператор сравнения = в неустановленных операторах.

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 (не просто в операторах SET), чтобы присвоить значение переменной.


вы можете использовать только := для присваивания - не для сравнения. Это просто немного синтаксического сахара, он на самом деле не меняет функциональность вообще. Вы увидите это много в сгенерированном SQL из кода.