Ein Freund von mir entdeckte dies und ich habe es getestet und in SQL Server Management Studio bestätigt. Wenn Sie eine Spalte finden, die ein INT
ist, können Sie abfragen:Warum funktioniert diese SQL-Abfrage, bei der ein Leerzeichen fehlt?
select *
from table
where foo = 1AND 1=1; /* works no problem */
Beachten Sie, dass es zwischen dem 1. und dem AND
kein Platz ist. Wir fragen uns, warum dies kein Problem für SQL ist. Ist das ein bekanntes SQL-Verhalten?
Bezeichner dürfen nicht mit einer Nummer beginnen. Und Zahlen können kein 'A' enthalten. So kann der Lexer die beiden Token voneinander unterscheiden. –
Der Parser kann erkennen, wann die Nummer endet und das Schlüsselwort beginnt – Hogan