Cómo formatear una lista para SQL, JSON o HTML

Tres formatos de destino. Tres conjuntos distintos de reglas de escapado. La misma lista de partida. El transforme correcto para cada uno, con las reglas de escapado que a nadie le gusta pensar, pero que rompen las consultas SQL y los analizadores de JSON cuando se omiten.

En esta página

La lista de partida

Para cada ejemplo de abajo, la entrada es la misma lista de cinco elementos:

red
green
blue
orange
yellow
Publicidad

Formato 1 — cláusula IN de SQL

Lo que quieres:

WHERE color IN ('red', 'green', 'blue', 'orange', 'yellow')

Pasos:

  1. Pega la lista en la herramienta Agregar Prefijo y Sufijo.
  2. Prefijo: '
  3. Sufijo: ',
  4. «Sin separador final en la última línea»: activado.
  5. Copia.
  6. Envuelve con WHERE color IN ( arriba y ) abajo.

Escapado: si algún elemento contiene una comilla simple, reemplaza primero ' por ''. La herramienta Buscar y Reemplazar lo hace en una sola pasada.

Límite: la mayoría de las bases de datos rechazan las cláusulas IN pasados los 1000 elementos. Para listas más largas, construye una tabla temporal o usa un JOIN contra una tabla de preparación.

Formato 2 — arreglo JSON

Lo que quieres:

["red", "green", "blue", "orange", "yellow"]

Pasos:

  1. Pega la lista en Prefijo/Sufijo.
  2. Prefijo: "
  3. Sufijo: ",
  4. «Sin separador final»: activado.
  5. Copia. Envuelve con [ y ].

Varias líneas está bien por legibilidad; una sola línea también funciona.

Escapado: si los elementos contienen comillas dobles, reemplaza primero " por \". Si contienen barras invertidas, reemplaza primero \ por \\. El Formateador de JSON valida el resultado y marca cualquier error de escapado.

Formato 3 — lista HTML no ordenada

Lo que quieres:

<ul>
  <li>red</li>
  <li>green</li>
  <li>blue</li>
  <li>orange</li>
  <li>yellow</li>
</ul>

Pasos:

  1. Pega la lista en Prefijo/Sufijo.
  2. Prefijo: <li>
  3. Sufijo: </li>
  4. Copia. Envuelve con <ul> arriba y </ul> abajo.

Escapado: si los elementos contienen caracteres especiales de HTML (<, >, &), preescríbelos como &lt;, &gt;, &amp;.

Para listas ordenadas, cambia <ul> por <ol> en el envoltorio. El marcado <li> se mantiene igual.

Formato 4 — lista de viñetas de Markdown

Lo que quieres:

- red
- green
- blue
- orange
- yellow

Pasos:

  1. Pega la lista en Prefijo/Sufijo.
  2. Prefijo: - (guion, espacio)
  3. Sufijo: vacío
  4. Copia.

Escapado: Markdown es permisivo. Los únicos elementos que necesitan atención: las líneas que empiezan con caracteres que Markdown reserva (-, *, #, >). Para esas, pon delante una barra invertida: \- empieza con guion.

Para listas numeradas, usa el prefijo 1. en cada línea. El motor de renderizado renumera de forma automática.

Formato 5 — cadena separada por comas

Lo que quieres:

red, green, blue, orange, yellow

Pasos:

  1. Pega la lista en Prefijo/Sufijo.
  2. Prefijo: vacío
  3. Sufijo: ,
  4. «Sin separador final»: activado.
  5. Copia.
  6. Busca y reemplaza los saltos de línea por espacios (o usa el interruptor de «unir con separador» si está disponible).

Para TSV (separado por tabuladores), usa un tabulador como separador. Para separado por comas con campos entre comillas (CSV con comas incrustadas), prefijo ", sufijo ",.

Formato 6 — literal de lista de Python / Ruby / Go

El mismo flujo de arreglo JSON produce sintaxis válida para la mayoría de los lenguajes:

colors = ["red", "green", "blue", "orange", "yellow"]

Solo pega el arreglo JSON en el lado derecho. Funciona en Python, JavaScript, TypeScript, Ruby (con %w[red green blue] como alternativa para arreglos de palabras) y Go (con []string{"red", "green", "blue"} como alternativa).

El resumen de las reglas de escapado

DestinoEscapeReemplazo
cadena SQL'''
cadena JSON"\"
cadena JSON\\\
texto HTML<&lt;
texto HTML>&gt;
texto HTML&&amp;
Markdown- al inicio de línea\-
CSV,envolver el campo con "..."
CSV" dentro de un campo entre comillas""
La tubería completa. Pega en la herramienta Agregar Prefijo y Sufijo, elige el formato, copia. El escapado para cada formato de destino se maneja de forma automática cuando hace falta.

La trampa que muerde a todos una vez

Escapes que no coinciden entre capas. Construyes una cláusula IN de SQL a partir de una lista. La lista contiene O'Brien. Sin el escape de SQL ('''), el SQL resultante es:

WHERE name IN ('O'Brien', ...)

Eso está roto sintácticamente. La comilla simple dentro de O'Brien cierra la cadena antes de tiempo. La consulta falla, o algo peor. Si la entrada venía de texto controlado por el usuario, esto es una vulnerabilidad de inyección SQL.

Escapa siempre según el formato de destino. Las herramientas de TextKit no lo hacen de forma automática porque el escape correcto depende del contexto. Pero hacen rápida la pasada de escapado una vez que sabes cuál hacer.

Para la referencia más amplia sobre las operaciones con listas, mira operaciones con listas: la guía completa. Para el flujo de prefijo/sufijo, mira cómo agregar prefijo y sufijo a cada línea.

Preguntas frecuentes

¿Cómo escapo las comillas simples en una cláusula IN de SQL?

Reemplaza cada comilla simple por dos comillas simples: '''. Así O'Brien se vuelve 'O''Brien' en la cláusula IN. Es el estándar de SQL.

¿Cuál es el escapado JSON para una comilla doble dentro de una cadena?

Escapado con barra invertida: \". JSON también requiere escapar la propia barra invertida (\\) y ciertos caracteres de control.

¿Las viñetas de Markdown dependen del orden?

Las listas numeradas de Markdown dependen del orden en el origen: cada línea debe empezar con 1., 2., etc. La mayoría de los motores renumeran solos, así que escribir 1. 1. 1. también funciona. Las listas de viñetas de Markdown (-) no dependen del orden.

¿Puedo copiar una columna de Google Sheets directamente en una cláusula IN de SQL?

No directamente. Sheets te da texto separado por tabuladores. Conviértelo: pega en la herramienta Agregar Prefijo y Sufijo con el prefijo ', el sufijo ', y «sin separador final» activado. Envuelve el resultado en paréntesis.

¿Cómo manejo cláusulas IN muy largas (más de 1000 elementos)?

La mayoría de las bases de datos rechazan las cláusulas IN pasado cierto tamaño. El límite de Oracle es 1000, el de SQL Server ronda los 10 000. Para listas largas, usa una tabla temporal o un JOIN contra una tabla de preparación en su lugar.

Publicidad

Seguir leyendo

Escrito por . Creamos las herramientas sobre las que escribimos. Prueba la herramienta Agregar Prefijo y Sufijo que usamos en este artículo.