2011-01-10 10 views
15

necesito para seleccionar los valores de enumeración de una columna. Desde la búsqueda he encontrado dos maneras:Mysql Seleccionar Enum

SELECT column_type FROM information_schema.columns 
WHERE table_name = 'MyTable' AND column_name = 'MyColumn'; 

y el otro:

SHOW COLUMNS FROM `mytable` WHERE field = 'type' 

Aunque la primera consulta me dará esta información:

enum('value1','value2','value3') 

La consulta segunda me la da lo mismo y con columnas adicionales también. Yo preferiría para obtener sólo aquellos valores sin la "enumeración()" y comas, es posible, o necesito para analizar los valores a cabo? No es que sea difícil sólo comprobando si hay una manera más fácil.

suponiendo que no hay manera más fácil, ¿cuál de las dos consultas de arriba es mejor usar? Me di cuenta de que la consulta segundo no muestra el tiempo de consulta cuando me encontré con él, casi pensé que no requiere ningún momento a todos. Pero si se enciende el generador de perfiles Veo que lleva tiempo, pero parece un poco más rápido. Entonces, ¿la segunda consulta sería más eficiente?

Respuesta

6

supongo que no se puede seleccionar aquellos valores cabo, terminé analizar los valores con esto:

$result = str_replace(array("enum('", "')", "''"), array('', '', "'"), $result); 
$arr = explode("','", $result); 
return $arr; 
+2

Nota que cada enumeración tiene un implícito ' ''' miembro en MySQL. No olvides agregar esto a tu matriz. (También 'NULL' si es necesario) – aib