В чем разница между = и:= в 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 из кода.