2011-01-10 4 views
15

Мне нужно выбрать значения перечисления столбца. Из поиска я нашел два способа:Mysql Select Enum Values ​​

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

и другие:

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

Хотя первый запрос даст мне эту информацию:

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

2-й запрос дает мне то же самое и с дополнительными столбцами. Я бы предпочел просто получить эти значения без «enum()» и запятых, возможно ли это, или мне нужно разобрать значения? Не то чтобы трудно проверить, есть ли более простой способ.

Предполагая, что нет более простого способа, какой из двух вышеперечисленных вопросов лучше использовать? Я заметил, что второй запрос не показывает время запроса, когда я его запускал, я почти думал, что это не требует никакого времени. Но если я включу профилировщик, я вижу, что на это требуется время, но это выглядит немного быстрее. Так будет ли второй запрос более эффективным?

ответ

6

Я думаю, вы не можете выбрать те значения, я в конечном итоге разбора значения с этим:

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

Обратите внимание, что каждое перечисление имеет неявный '' «» член в MySQL. Не забудьте добавить это в свой массив. (Также «NULL» при необходимости.) – aib