Un SET es un objeto de cadenas de caracteres
        que tiene cero o más valores, cada uno de ellos debe elegirse
        de una lista de valores posibles especificada cuando se crea la
        tabla. Los valores de columnas SET que
        consisten de múltiples miembros del conjunto se especifican con
        los miembros separados por comas (','). Una
        consecuencia de esto es que los miembros de
        SET no pueden contener comas ellos mismos.
      
        Por ejemplo, una columna especificada como SET('one',
        'two') NOT NULL puede tener cualquiera de estos
        valores:
      
'' 'one' 'two' 'one,two'
        Un SET puede tener un máximo de 64 miembros
        distintos.
      
        Los espacios finales se borran automáticamente de los miembros
        de un SET cuando se crea la tabla.
      
        Cuando se recuperan, los valors almacenados en una columna
        SET se muestran usando la sensibilidad de
        mayúsculas/minúsculas usando en la definición de la columna.
        En MySQL 5.0, las columnas SET pueden tener
        un conjunto de caracteres y colación. Para colaciones binarias
        o sensibles a mayúsculas/minúsculas, esta sensibilidad se
        tiene en cuenta al asignar valores a la columna.
      
        MySQL almacena valores SET numéricamente,
        con el bit de menos peso del valor almacenado correspondiente al
        primer miembro del conjunto. Si recibe un valor
        SET en un contexto numérico, el valor
        recibido tiene los bits asignados correspondientes a los
        miembros que coinciden con el valor de la columna. Por ejemplo,
        puede recuperar los valores numéricos de una columna
        SET así:
      
mysql> SELECTset_col+0 FROMtbl_name;
        Si se almacena un número en una columna SET,
        los bits que se asignan en la representación binaria del
        número determinan los miembros del conjunto en el valor de la
        columna. Para una columna especificada como
        SET('a','b','c','d'), los miembros tienen los
        siguientes valores decimales y binarios:
      
| SETMiembro | Valor decimal | Valor binario | 
| 'a' | 1 | 0001 | 
| 'b' | 2 | 0010 | 
| 'c' | 4 | 0100 | 
| 'd' | 8 | 1000 | 
        Si asigna un valor de 9 a esta columna, esto
        es 1001 en binario, de forma que el primer y
        cuarto miembro delSET 'a'
        y 'd' se seleccionan y el valor resultante es
        'a,d'.
      
        Para un valor que contenga más de un elemento
        SET, no importa el orden en que se listen los
        elementos cuando inserte el valor. Tampoco no importa cuántas
        veces se lista un elemento dado para el valor. Cuando el valor
        se recupera posteriormente, cada elemento en el valor aparece
        una vez, con los elementos listados según el orden en que se
        especificaron al crear la tabla. Si una columna se especifica
        como SET('a','b','c','d'),
        'a,d', 'd,a', y
        'd,a,a,d,d' aparecen como
        'a,d' al recuperarse.
      
        Si asigna un valor no soportado a una columna
        SET, el valor se ignora.
      
        Los valores SET se ordenan numéricamente.
        Los valores NULL se ordenan antes de los no
        NULL.
      
        Normalmente, busca valores SET usando la
        función FIND_IN_SET() o el operador
        LIKE :
      
mysql> SELECT * FROMtbl_nameWHERE FIND_IN_SET('value',set_col)>0; mysql> SELECT * FROMtbl_nameWHEREset_colLIKE '%value%';
        El primer comando encuentra registros cuando
        set_col contiene el miembro
        value del conjunto. El segundo es
        similar, pero no igual: encuentra registros cuando
        set_col contengan el valor
        value en cualquier sitio, incluso
        cuando es una subcadena de otro miembro del conjunto.
      
Los siguientes comandos también son legales:
mysql> SELECT * FROMtbl_nameWHEREset_col& 1; mysql> SELECT * FROMtbl_nameWHEREset_col= 'val1,val2';
        El primero de estos comandos busca valores que contengan el
        primer miembro del conjunto. El segundo busca una coincidencia
        exacta. Tenga cuidado con las comparaciones del segundo tipo.
        Comparar valores del conjunto
        '
        retorna distintos resultados que comparar valores de
        val1,val2''.
        Debe especificar los valores en el mismo orden en que se listan
        en la definición de la columna.
      val2,val1'
        Si desea determinar todos los valores posibles para una columna
        SET, use SHOW COLUMNS FROM
         y parsee la
        definición de tbl_name LIKE
        set_colSET en la segunda columna de
        la salida.
      
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

