Inicio › Herramientas para desarrolladores › Generador de cláusulas IN de SQL

Generador de cláusulas IN de SQL

Pega una columna de IDs, correos o códigos copiada de Excel, de un log o de otra consulta. Obtienes una condición WHERE … IN (…) lista para usar, con las comillas escapadas, los duplicados eliminados y las listas largas divididas para las bases de datos con límites.

Última actualización:

Valores en la cláusula0
Duplicados eliminados0
Tratados como—
Listas IN0
Publicidad
Publicidad

Cómo usar Generador de cláusulas IN de SQL

  1. Pega tus valores en el recuadro de la izquierda, uno por línea o separados por comas o tabulaciones.
  2. Escribe el nombre de la columna (p. ej. customer_id) y elige IN o NOT IN.
  3. Elige la base de datos para que las comillas y el escape coincidan con ella, y fija un tamaño máximo de lista si tiene un límite.
  4. Revisa las opciones: eliminar duplicados, ordenar, quitar las comillas existentes o envolver el resultado en tu propia consulta.
  5. Pulsa Generar cláusula IN, lee los avisos y luego copia el SQL o descárgalo como archivo .sql.

Sintaxis de la lista IN por base de datos

Base de datosValor de textoComillas de identificadoresNotas
SQL estándar / SQLite'O''Brien'"order"Duplica la comilla simple; las comillas dobles indican un nombre de columna o de tabla.
MySQL / MariaDB'O''Brien', barra invertida duplicada`order`La barra invertida es un carácter de escape salvo que esté activado NO_BACKSLASH_ESCAPES.
PostgreSQL'O''Brien'"order"También acepta col = ANY (ARRAY[…]), útil con parámetros de array.
SQL Server'O''Brien' o N'Ünïcode'[order]Usa el prefijo N para columnas NVARCHAR con texto no latino.
Oracle'O''Brien'"ORDER"Máximo 1,000 valores por lista (ORA-01795); divide las listas más largas.

Listas largas, NULL y otras trampas

  • Los bloques se unen con OR para IN y con AND para NOT IN. id NOT IN (…) OR id NOT IN (…) coincidiría con casi todas las filas, un error clásico al dividir listas a mano.
  • Los ceros a la izquierda importan. Los códigos postales, números de teléfono y SKUs como 00721 deben ir entre comillas; como números pierden los ceros y dejan de coincidir.
  • Los tipos que no coinciden ralentizan las consultas. Comparar una columna VARCHAR con números sin comillas (o una columna numérica con cadenas entre comillas) puede forzar una conversión en cada fila y omitir el índice. Ajusta las comillas al tipo de la columna.
  • Los duplicados son inofensivos pero estorban. No cambian el resultado, pero eliminarlos hace la sentencia más corta y fácil de revisar.
  • Usa parámetros en el código de tu aplicación. Esta herramienta es para consultas puntuales, informes y scripts. En una aplicación, pasa los valores como parámetros enlazados o como un array para evitar la inyección SQL.

Preguntas frecuentes

¿Cómo convierto una columna de Excel en una lista IN de SQL?

Copia las celdas en Excel y pégalas en el recuadro de entrada. Cada celda llega en su propia línea, así que la herramienta divide por saltos de línea, recorta espacios, elimina duplicados y envuelve todo en una lista IN ( … ) con las comillas correctas. Escribe el nombre de tu columna para obtener la condición completa, por ejemplo customer_id IN (1001, 1002, 1003).

¿Los valores de una cláusula IN deben ir entre comillas?

Los valores de texto deben ir entre comillas simples, como 'abc'. Los números pueden escribirse sin comillas cuando la columna es numérica. Mantén las comillas en códigos con ceros a la izquierda como 00721; sin comillas se convierten en el número 721. La detección automática solo quita las comillas cuando todos los valores son números simples sin ceros a la izquierda.

¿Cómo escapo un apóstrofo en una cadena SQL?

El SQL estándar escapa una comilla simple duplicándola, así que O'Brien se convierte en 'O''Brien'. Eso funciona en PostgreSQL, SQL Server, Oracle, SQLite y MySQL. MySQL además trata la barra invertida como carácter de escape por defecto, así que la herramienta duplica las barras invertidas cuando eliges MySQL. En SQL estándar, las comillas dobles son para identificadores, no para valores de texto.

¿Hay un límite en el número de valores de una lista IN?

Oracle permite como máximo 1,000 expresiones en una lista y lanza ORA-01795 por encima de eso. Otras bases de datos no tienen un número fijo, pero están limitadas por la longitud de la sentencia y los límites de parámetros, y las listas enormes se analizan lentamente. Pon Máx. valores por lista en 1,000 y la herramienta dividirá la lista en varias listas IN unidas con OR, que Oracle acepta.

¿Por qué NOT IN no devuelve filas cuando la lista contiene NULL?

x NOT IN (1, 2, NULL) significa x <> 1 AND x <> 2 AND x <> NULL, y cualquier comparación con NULL es desconocida, así que la condición completa nunca es verdadera. Del mismo modo, IN (NULL) nunca coincide con las filas NULL. Con la opción NULL activada, la herramienta quita NULL de la lista y añade en su lugar una prueba explícita IS NULL o IS NOT NULL.

¿Cuándo debo usar una tabla temporal en lugar de una lista IN larga?

Para decenas de miles de valores, un join suele ser más rápido y más sencillo para el planificador de consultas: carga los valores en una tabla temporal (o en un parámetro con valores de tabla en SQL Server, o = ANY con un parámetro de array en PostgreSQL) y haz un join con ella. Las listas IN son ideales para búsquedas rápidas, informes puntuales y desde unos cientos hasta unos miles de valores.

¿Se envían mis datos a un servidor?

No. La lista se procesa con JavaScript en tu navegador, así que los IDs de clientes, los correos y demás valores nunca salen de tu computadora.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Conversores de datos y formatos de archivo →