首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

如何獲取 MySQL ENUM(枚舉)欄位的所有可能值

     編輯:MySQL 資料庫相關知識

在 MySQL 中,要取得 ENUM 類型欄位的所有允許值,其實不需要撰寫複雜的函數,僅需善用 MySQL 內建的 SQL 語句即可輕鬆搞定。本文以系統表 user 中的 Select_priv 欄位為例,示範如何擷取其所有可能的枚舉值。

核心方法:SHOW COLUMNS 指令

關鍵語法如下:

SHOW COLUMNS FROM table_name LIKE enum_column_name;

只需將 table_name 替換為目標資料表名稱,enum_column_name 替換為目標 ENUM 欄位名稱即可。

PHP 實作範例

以下程式碼展示如何連線資料庫、執行查詢並解析回傳的型別字串,最終印出每一個枚舉值:

<?php
// 資料庫連線設定
$host = "localhost";
$dbName = "mysql";
$user = "root";
$pass = "";

$conn = mysql_connect($host, $user, $pass);
mysql_select_db($dbName, $conn);

// 查詢 ENUM 欄位定義
$query = "SHOW COLUMNS FROM user LIKE 'select_priv'";
$result = mysql_db_query($dbName, $query, $conn);

// 取得型別欄位內容,格式類似:enum('N','Y')
$typeStr = mysql_result($result, 0, "Type");
echo "原始型別字串: " . $typeStr . "<br>";

// 解析字串,取得括號內的值
// 1. 移除 'enum(' 前綴
$temp = explode("(", $typeStr);
$temp = $temp[1]; // 取得 'N','Y') 部分

// 2. 移除結尾 ')'
$temp = explode(")", $temp);
$enumList = $temp[0]; // 取得 'N','Y'

// 3. 以逗號分割成陣列
$enumValues = explode(",", $enumList);

// 4. 輸出每個值(並移除單引號)
foreach ($enumValues as $val) {
    echo trim($val, "'") . "<br>";
}

mysql_close($conn);
?>

解析邏輯說明

  1. SHOW COLUMNS 回傳的 Type 欄位會包含完整的 ENUM 定義,例如 enum('N','Y')。
  2. 透過字串分割(explode),依序移除 enum(、結尾的 ),最後以逗號分隔取得各個值。
  3. 最後使用 trim 去除值兩側的單引號,即可獲得純淨的枚舉值列表。

注意: 上述範例使用的是較舊的 mysql_* 函式庫,現代專案建議改用 mysqli 或 PDO 以確保安全性與相容性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved