Tema SQL
EXPORT_SET() (MySQL / MariaDB)
Convierte un entero en una cadena de símbolos separados según el valor de cada bit: un carácter para bit 1 y otro para bit 0, con separador opcional y longitud máxima de bits.
Descripción
EXPORT_SET(bits, on, off[, sep[, num_bits]]) genera una representación textual de la máscara (p. ej. Y/N por permiso). El quinto argumento limita cuántos bits recorrer desde el menos significativo. Sirve para depuración y exportaciones compactas de flags; la lógica inversa a MAKE_SET en cuanto a lectura humana. Para protocolos binarios o almacenamiento compacto sigue siendo preferible TINYINT/BIT y vistas que expliquen el significado.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
EXPORT_SET(bits, símbolo_on, símbolo_off [, separador [, num_bits]])
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Bits
- Se expanden desde el bit bajo; num_bits recorta la salida.
- Separador
- Por defecto coma entre posiciones bit.
- Uso
- Diagnóstico y reportes; no sustituye modelo de datos claro.
Ejemplos
Ejemplo 1
SELECT EXPORT_SET(5, 'Y', 'N', ',', 4) AS bits;
-- Y,N,Y,N (5 = 0b0101 en 4 bits mostrados según orden interno)
SELECT EXPORT_SET(flags, '1', '0', '') AS binario
FROM dispositivos;
Ejemplo 2
SELECT EXPORT_SET(role_flags, 'Sí', 'No', ' | ', 8) AS desglose
FROM roles_app;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.