Cómo seleccionar un nombre de columna con un espacio en MySQL [duplicado]

90

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 SELECTdeclaración con 'Nombre comercial', dice que no hay una columna con el nombre 'Negocios'.

¿Como puedó resolver esté problema?

ehp
fuente
No tengo suficiente reputación para comentar correctamente, así que etiquetado al final: La solución publicada arriba en los comentarios: `annoying_table``Business Name` no funcionó para mí en mySQL en una declaración where. Dejar caer las comillas traseras en el nombre de la tabla funcionó: es decir, tabla molesta. 'Nombre de la empresa'
Tim0th1

Respuestas:

159

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.

tadman
fuente
@tadman Si copio y pego su consulta, funciona, pero si escribo comillas simples desde el teclado, no funciona. es decir. SELECCIONAR 'Nombre comercial' de annoying_table no funciona
ehp
17
Es porque no se trata de comillas simples, sino de símbolos de marca que normalmente puede encontrar en su teclado a la izquierda desde el dígito 1.
peterm
5
Hay tres tipos de comillas, simples ', 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.
tadman
corchetes [] no funcionó para mí. No hay errores, pero simplemente no se muestra. `por otro lado funcionó muy bien.
Jay
1
@Robert Entonces lo escribirías así: `annoying_table``Business Name`.
Erik Čerpnjak
20

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

PadreMathew
fuente
16

Necesita usar comillas simples en lugar de comillas simples:

Comilla simple - 'Business Name'- Incorrecto

Atrás - `Business Name`- Correcto

Saurabh
fuente
3

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.

Valmiki
fuente
0

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] ...
kztd
fuente
-3

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.

Vin.X
fuente
5
Esto siempre seleccionaría la cadena "Nombre comercial", no el contenido de la columna.
JonasB
@JonasB Por favor, vuelva a verificar, utilicé comillas dobles, no comillas simples ... Las comillas simples darán como resultado la cadena, las comillas dobles no.
Vin.X
La pregunta era específicamente sobre MySQL y en un servidor MySQL con configuraciones estándar, las comillas dobles y las comillas simples son equivalentes. Consulte esta respuesta para obtener más información sobre por qué es una mala idea usar comillas dobles en MySQL: stackoverflow.com/a/14123649/4172652
JonasB