Bueno, el problema es que no puedes poner un literal o un número en una sentencia SELECT, se interpretarán como lo que son.
Por otro lado, el problema lo tienes desde el inicio: Nunca, repito, NUNCA, por protocolo y estándar una columna de una tabla, o una tabla llevan por nombre un valor numérico. Esto es válido tanto para el SQL como para cualquier lenguaje de programación.
No es una regla escrita simplemente porque se trata de algo que siempre existió, desde los inicios, y todos los desarrolladores lo saben.
De hecho, si intentas crear en consola una tabla con números por nombre de columnas, bases o tablas, verás que da error de sintaxis. Si lo has podido hacer es porque has debido usar alguna interfase para crear la tabla. En las interfases, para crear una tabla, estas envían al DBMS la sentencia con algunas transformaciones para resolver problemas de compatibilidad. Una de esas transformaciones es la que resolverá tu problema:
Los nombres de campos, tablas y bases se encierran entre acentos agudos (`), para permitir el uso de palabras reservadas, o caracteres no alfanuméricos en los nombres.
Entonces, para poder acceder a los valores, deberás hacer lo mismo:
Y cada vez que invoques esos campos, deberás hacer lo mismo:
Código SQL:
Ver originalSELECT `0`, `1`, `2`
FROM tabla
WHERE `1`= valor;
Sugerencia final: Atente a las reglas de programación, y si quieres numerar los campos, ponles un caracter alfabético al inicio, como se hace en todos los lenguajes de programación...