Vielleicht hab es es auch nur überlesen und es wurde schon erwähnt, aber im Grunde lag hier ein Verständnisproblem vor.
123
ist für
SQL ein "Integer" und
"123"
ist ein Text, auch wenn Beides im
SQL-Text ein "String" ist.
SQL wollte praktisch den Integer, also ohne die ", aber für den
SQL-Text muß deine Integervariable in einen "String" umewandelt werden, denn diesen baust du ja als Text zusammen.
Außer du nutzt parametrisierte Abfragen, wo du deine Variable an den Parameter auch als Interger übergeben könntest.
Und ja, einige
SQL-Dialekte besitzen eine automatische Typumwandlung zwischen Zahlen und Texten.
Wobei diese über die Operatoren erkennen, was da zusammengesetzt werden soll.
(z.B.
"123" || 456
ergibt den Text "123465" und
"123" + 456
ergibt 579)