2011-01-10 17 views
15

Devo selezionare i valori enum di una colonna. Da una ricerca ho trovato due modi:Mysql Seleziona valori enum

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

e l'altro:

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

Anche se la prima query mi darà questa info:

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

La seconda interrogazione mi dà la stesso e con colonne aggiuntive. Preferirei ottenere quei valori senza "enum()" e virgole, è possibile o devo analizzare i valori? Non è difficile solo controllare se c'è un modo più semplice.

Supponendo che non vi sia un modo più semplice, quale delle due domande sopra è meglio usare? Ho notato che la seconda query non mostra il tempo di interrogazione quando l'ho eseguita, ho quasi pensato che non richiedesse alcun tempo. Ma se accendo il profiler posso vedere che ci vuole tempo, ma sembra un po 'più veloce. Quindi la seconda query sarebbe più efficiente?

risposta

6

credo che non è possibile selezionare questi valori fuori, ho finito per l'analisi dei valori fuori con questo:

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

Nota che ogni enum ha un implicito ' ''' membro in MySQL. Non dimenticare di aggiungere questo al tuo array. (Anche 'NULL' se necessario.) – aib