2013-03-25 20 views

risposta

8

Entrambi sono operatori di assegnazione ma una cosa che posso trovare le loro differenze è che = può essere utilizzato per eseguire l'operazione booleana, mentre := non può.

valida: SUM (val = 0)
non valido: SUM (val: = 0)

FROM User-Defined Variables

Ancora una cosa, è inoltre possibile assegnare un valore a una variabile utente in dichiarazioni diverse da SET. In questo caso, l'operatore di assegnazione deve essere: = e non = perché quest'ultimo viene trattato come operatore di confronto = in istruzioni non SET.

mysql> SET @t1=1, @t2=2, @t3:=4; 
mysql> SELECT @t1, @t2, @t3, @t4 := @[email protected][email protected]; 
+------+------+------+--------------------+ 
| @t1 | @t2 | @t3 | @t4 := @[email protected][email protected] | 
+------+------+------+--------------------+ 
| 1 | 2 | 4 |     7 | 
+------+------+------+--------------------+ 
8

È più o meno zucchero sintattico.

Date un'occhiata here

differenza più importante è

differenza =, l'operatore: = non viene mai interpretato come un confronto operatore. Ciò significa che è possibile utilizzare: = in qualsiasi istruzione SQL valida (non solo nelle istruzioni SET) per assegnare un valore a una variabile.

1

È possibile utilizzare solo: = per l'assegnazione - mai per il confronto. È solo un po 'di zucchero sintattico, non cambia affatto la funzionalità. Lo vedrai molto in SQL generato dal codice.

+1

Dang, tutti mi picchiano. Hah. – antinescience

Problemi correlati