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.
- La lista de partida
- Formato 1: cláusula IN de SQL
- Formato 2: arreglo JSON
- Formato 3: lista HTML no ordenada
- Formato 4: lista de viñetas de Markdown
- Formato 5: cadena separada por comas
- Formato 6: literal de lista de Python / Ruby / Go
- El resumen de las reglas de escapado
- La trampa que muerde a todos una vez
La lista de partida
Para cada ejemplo de abajo, la entrada es la misma lista de cinco elementos:
red
green
blue
orange
yellow
Formato 1 — cláusula IN de SQL
Lo que quieres:
WHERE color IN ('red', 'green', 'blue', 'orange', 'yellow')
Pasos:
- Pega la lista en la herramienta Agregar Prefijo y Sufijo.
- Prefijo:
' - Sufijo:
', - «Sin separador final en la última línea»: activado.
- Copia.
- 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:
- Pega la lista en Prefijo/Sufijo.
- Prefijo:
" - Sufijo:
", - «Sin separador final»: activado.
- 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:
- Pega la lista en Prefijo/Sufijo.
- Prefijo:
<li> - Sufijo:
</li> - Copia. Envuelve con
<ul>arriba y</ul>abajo.
Escapado: si los elementos contienen caracteres especiales de HTML (<, >, &), preescríbelos como <, >, &.
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:
- Pega la lista en Prefijo/Sufijo.
- Prefijo:
-(guion, espacio) - Sufijo: vacío
- 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:
- Pega la lista en Prefijo/Sufijo.
- Prefijo: vacío
- Sufijo:
, - «Sin separador final»: activado.
- Copia.
- 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
| Destino | Escape | Reemplazo |
|---|---|---|
| cadena SQL | ' | '' |
| cadena JSON | " | \" |
| cadena JSON | \ | \\ |
| texto HTML | < | < |
| texto HTML | > | > |
| texto HTML | & | & |
| Markdown | - al inicio de línea | \- |
| CSV | , | envolver el campo con "..." |
| CSV | " dentro de un campo entre comillas | "" |
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.
Seguir leyendo
Escrito por SAVI. Creamos las herramientas sobre las que escribimos. Prueba la herramienta Agregar Prefijo y Sufijo que usamos en este artículo.