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

MySQL 判斷欄位是否存在的三種方法

     編輯:MySQL 資料庫相關知識

在腳本或程式中動態檢查資料表是否包含某欄位,常用以下三種等效指令:

1. DESC / DESCRIBE

DESC `table_name` `column_name`;
DESC `table_name` '%pattern%';  -- 支援萬用字元

若欄位存在,回傳欄位定義;不存在則回傳 Empty set。

2. SHOW COLUMNS

SHOW COLUMNS FROM `table_name` LIKE 'column_name';
SHOW COLUMNS FROM `table_name` LIKE '%pattern%';

輸出格式與 DESC 相同,支援 LIKE 模糊匹配。

3. DESCRIBE(完整寫法)

DESCRIBE `table_name` `column_name`;
DESCRIBE `table_name` '%pattern%';

DESCRIBE 是 SHOW COLUMNS FROM 的別名,行為完全一致。

程式化判斷範例

Shell + MySQL 客戶端

if mysql -u root -p'pwd' -N -e "SHOW COLUMNS FROM db.tbl LIKE 'col'" | grep -q 'col'; then
  echo "Column exists"
else
  echo "Column NOT exists"
fi

存儲過程中判斷

DELIMITER $$
CREATE PROCEDURE check_col(IN tbl VARCHAR(64), IN col VARCHAR(64))
BEGIN
  DECLARE cnt INT DEFAULT 0;
  SELECT COUNT(*) INTO cnt
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = tbl AND COLUMN_NAME = col;
  SELECT IF(cnt > 0, 'EXISTS', 'NOT EXISTS') AS result;
END$$
DELIMITER ;

資訊庫查詢最標準、跨版本相容,建議在程式碼中使用。

總結

指令支援萬用字元適用場景
DESC / DESCRIBE是快速互動檢查
SHOW COLUMNS是腳本/程式解析輸出
INFORMATION_SCHEMA.COLUMNS否(需自行 LIKE)嚴謹程式邏輯、存儲過程
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved