Un mio amico ha scoperto questo e l'ho testato e confermato in SQL Server Management Studio. Se si trova una colonna che è un INT
, è possibile interrogare:Perché questa query SQL sembra mancare uno spazio?
select *
from table
where foo = 1AND 1=1; /* works no problem */
Nota che non c'è spazio tra il 1 e il AND
. Ci stiamo chiedendo perché questo non è un problema per SQL. Si tratta di un comportamento SQL noto?
Gli identificatori non possono iniziare con un numero. E i numeri non possono contenere un 'A'. Quindi il lexer è in grado di distinguere i due token. –
Il parser è in grado di dire quando il numero termina e la parola chiave inizia – Hogan