2011-01-10 113 views
15

我需要选择列的枚举值。从搜索,我发现有两种方式:Mysql Select枚举值

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') 

第二届查询给了我相同并附加列。我宁愿只是在没有“enum()”和逗号的情况下获得这些值,是可能的,还是我需要解析这些值?并不是说检查是否有更简单的方法很难。

假设没有简单的方法,上面哪个查询更适合使用?我注意到第二个查询没有显示查询时间,我几乎认为它不需要任何时间。但是如果我打开分析器,我可以看到它确实需要时间,但看起来速度更快。那么第二个查询会更有效率吗?

回答

6

我猜你不能选择那些值了,我结束了解析值了这一点:

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

需要注意的是每一个枚举有一个隐含的'“”'在MySQL成员。不要忘记把它添加到你的数组中。 (如果需要,也是`NULL`。) – aib 2012-08-28 08:35:02