una toda palabra group_concat fulltext ejemplos datos consultas concatenar coincidencias campo busqueda buscar avanzada mysql database hyphen

toda - Guiones en nombres de columnas en MySQL DB



fulltext mysql (6)

Puede que esta pregunta haya sido respondida antes pero no pude encontrarla.

Estoy usando una base de datos MySQL de 2/3 años que tiene guiones en sus nombres de columna. Cuando trato de usar estos nombres de mi código Java, los nombres se rompen en el guión (por ejemplo, air_port se convierte en air) y, por lo tanto, no se encuentran. Intenté reemplazar guiones con guiones bajos en mi código con la esperanza de que el DB los tratara por igual, pero eso no funciona.

¿Cómo puedo escapar del guión o cómo puedo acceder a estas columnas? ¿Podría ser este un problema del conjunto de caracteres que se está utilizando?


¿Tiene guiones (-) o guiones bajos (_) en los nombres de sus columnas?

Los guiones son un gran problema porque si terminas asignando un nombre de columna a una variable, a la mayoría de los idiomas no les gusta tener guiones dentro de los nombres de las variables. Quizás esté utilizando una de las bibliotecas de Java que genera automáticamente variables u objetos cuyos nombres se basan en nombres de columnas.

Dependiendo de la naturaleza de su problema, hay un par de enfoques diferentes que puede utilizar:

  1. Renombra todas tus columnas usando ALTER TABLE. Tenga en cuenta que esto podría afectar la integridad referencial u otras aplicaciones que dependen de la base de datos. Si no sabes lo que eso significa, no lo hagas.
  2. Cree vistas SQL que simplemente actualicen las tablas que necesita pero con "mejores" nombres de columna. Esto no es muy eficiente, pero le permitirá obtener lo que desea.
  3. Use la palabra clave AS cuando ejecute sus instrucciones SELECT para cambiar el nombre de las columnas dentro de las consultas.

Ninguna de estas soluciones es excelente, pero deberían ayudarte a comenzar. ¡Buena suerte!


Es mejor no usar guiones en los nombres de sus columnas. Sufrí un gran problema con las declaraciones de JOIN, donde los guiones causaban grandes problemas, incluso los nombres que se escapaban en las garrapatas no funcionaban.

Convierta los nombres de las columnas para usar guiones bajos: esta es la forma más segura de hacerlo.


Los guiones en nombres de bases de datos no son buenos también. Pero puedes usarlos con el truco de retroceso.

`name-with-hyphen`


Tuve que crear un db llamado pre-ca_db.

Resolví el problema con

create database `pre-ca_db`;

¡Buena suerte!


encierre los nombres dentro de ''back-ticks''


Esta entrada en el foro de MySQL sugiere que podría tener un problema. Sin embargo, creo que se refiere a datos y no a nombres de columnas.

This dice "no lo hagas". No sé qué autoridad tiene.