Estoy trabajando en un proyecto donde otro desarrollador creó una tabla con nombres de columna como 'Business Name'
. Ese es un espacio entre dos palabras. Si ejecuto una SELECT
declaración con 'Nombre comercial', dice que no hay una columna con el nombre 'Negocios'.
¿Como puedó resolver esté problema?
Respuestas:
Generalmente, el primer paso es no hacer eso en primer lugar, pero si esto ya está hecho, entonces debe recurrir a citar correctamente los nombres de sus columnas:
SELECT `Business Name` FROM annoying_table
Por lo general, este tipo de cosas son creadas por personas que han usado algo como Microsoft Access y siempre usan una GUI para hacer lo suyo.
fuente
'
, dobles"
y al revés`
. En MySQL, los dos primeros son equivalentes y se pueden usar indistintamente. Este no es siempre el caso en otras plataformas, y Postgres en particular las trata de manera diferente. Las comillas inversas se utilizan solo para el escape de nombres de columnas o bases de datos.Si las comillas dobles no funcionan, intente incluir la cadena entre corchetes.
Por ejemplo:
SELECT "Business Name","Other Name" FROM your_Table
se puede cambiar como
SELECT [Business Name],[Other Name] FROM your_Table
fuente
Necesita usar comillas simples en lugar de comillas simples:
Comilla simple -
'Business Name'
- IncorrectoAtrás -
`Business Name`
- Correctofuente
Para cada uno lo suyo, pero la forma correcta de codificar esto es cambiar el nombre de las columnas insertando un guión bajo para que no haya espacios. Esto asegurará cero errores al codificar. Al imprimir los nombres de las columnas para la visualización pública, puede buscar y reemplazar para reemplazar el guión bajo con un espacio.
fuente
Para MS Access, los corchetes funcionan y las comillas invertidas causan todo tipo de errores extraños, como "Nombre de consulta no válido: Consulta1".
Debe tener un aspecto como este
SELECT Customer.[Customer ID], Customer.[Full Name] ...
fuente
Creo que las comillas dobles también funcionan:
SELECT "Business Name","Other Name" FROM your_Table
Pero solo probé en SQL Server NO en mySQL en caso de que alguien trabaje con MS SQL Server.
fuente