piapia123
es

Comillas de identificadores SQL

Texto

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Dos trabajos, cada uno de una situación real. Añadir comillas: llevar SQL de estilo MySQL a Postgres u Oracle. Los identificadores de MySQL no distinguen mayúsculas por defecto, mientras que Postgres pliega a minúsculas los identificadores sin comillas: una columna llamada `userID` llega como `userid` y la sentencia falla con «la columna no existe». Las comillas dobles son lo que conserva las mayúsculas originales. Quitar comillas: devolver los `"users"` y `"userID"` que exporta Postgres a identificadores desnudos, que se leen mejor y se pegan sin problema en herramientas antiguas que rechazan las comillas. ⚠️ La regla que más importa: no se toca nada de lo que hay dentro de las cadenas ni de los comentarios. Una implementación ingenua que entrecomilla cada palabra convierte `INSERT INTO t VALUES ('active')` en `'"active"'` —dos comillas de más guardadas en los datos, con la sentencia ejecutándose igual de bien, así que el fallo solo se descubre al leer los datos—. En su lugar se usa un pequeño analizador que salta enteras las cadenas, los comentarios y los identificadores ya entrecomillados. Cuando una comilla no se puede quitar, se queda. `"user id"` (un espacio), `"order"` (palabra reservada) y `"2fa"` (empieza por dígito) son identificadores inválidos desnudos. Se conservan las comillas y se informa del número, en vez de emitir SQL que no se puede ejecutar.

Funciones

  • Añade comillas dobles a nombres de tabla, columna y alias en bloque
  • O quita las comillas dobles y las invertidas ya existentes (las invertidas pasan a comillas dobles, que los tres motores aceptan)
  • ⚠️ No se toca nada de dentro de las cadenas, ni siquiera las que usan el escape `''`
  • No se toca nada de los comentarios de línea `--` ni de bloque `/* */`
  • Las palabras clave de SQL no se entrecomillan (entrecomillar `select` lo convertiría en un nombre de columna)
  • Los identificadores no ASCII también se entrecomillan, así que los nombres con acentos o en chino sobreviven
  • Al quitar comillas, los nombres que no se pueden escribir desnudos conservan las suyas y se informa del número
  • Cada fila se copia por separado y el texto explicativo nunca acaba en lo copiado

Cómo se usa

  1. Pega una sentencia SQL
  2. Elige Añadir comillas dobles o Quitar comillas dobles
  3. El resultado se actualiza al escribir; cópialo

Preguntas frecuentes

¿Se cambiará el contenido de las cadenas?
No, y esa es la regla más importante de aquí. La palabra `active` de `INSERT INTO t VALUES ('active')` es dato, no un identificador; entrecomillarla produce `'"active"'`, y esas dos comillas de más sí se guardan en la base de datos. Peor aún, la sentencia se ejecuta igual, así que el problema solo aparece al volver a leer los datos. Los comentarios se saltan enteros por el mismo motivo.
¿Por qué no se entrecomillan las palabras clave?
Porque entrecomillar `select` lo convierte de palabra clave en un nombre de columna llamado select, y la sentencia pasa a significar otra cosa al instante. Una tabla de palabras clave integrada cubre las habituales; una palabra poco común que falte en ella como mucho hará que la sentencia falle con «la columna no existe», algo que se ve en cuanto la ejecutas: no cambiará el significado en silencio.
¿Por qué sobreviven algunas comillas al quitarlas?
Porque el nombre quedaría inválido sin ellas. Tres casos: un espacio o un carácter especial (`"user id"` se partiría en dos palabras), una palabra reservada (`"order"` chocaría con `ORDER BY`) y un dígito inicial (`"2fa"` no es un identificador válido). Las comillas se quedan y la herramienta te dice cuántos nombres así había: emitir SQL que no se puede ejecutar sería mucho peor que dejar unas pocas comillas.

Herramientas relacionadas