มีหลายวิธีในการตรวจสอบว่าคอลัมน์มีอยู่ในตารางหรือไม่ วิธีที่แนะนำคือใช้ SHOW COLUMNS หรือ查询 INFORMATION_SCHEMA
วิธีที่ 1: ใช้ SHOW COLUMNS (แนะนำ)
SHOW COLUMNS FROM `table_name` LIKE 'column_name';
ตัวอย่าง
SHOW COLUMNS FROM `ColumnExistDemo` LIKE 'UniqueName';
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| UniqueName | varchar(200) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
ถ้ามีคอลัมน์ จะแสดงข้อมูลคอลัมน์นั้น ถ้าไม่มี จะได้ Empty Set
วิธีที่ 2: ใช้ INFORMATION_SCHEMA.COLUMNS (ยืดหยุ่นกว่า)
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'database_name'
AND TABLE_NAME = 'table_name'
AND COLUMN_NAME = 'column_name';
ข้อดี
- ได้ข้อมูลรายละเอียดครบ (Data Type, Nullable, Default, Comment, v.v.)
- ใช้ใน Subquery / Stored Procedure ได้
- รองรับ Wildcard (%) ในชื่อคอลัมน์
วิธีที่ 3: ใช้ DESCRIBE / DESC (ดูทั้งตาราง)
DESC table_name;
-- หรือ
DESCRIBE table_name;
เหมาะสำหรับดูโครงสร้างทั้งตาราง แต่ไม่เหมาะสำหรับเช็คคอลัมน์เดียว
วิธีที่ 4: ใช้ COLUMNS() Function (ในบาง Version)
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'db' AND TABLE_NAME = 'tbl' AND COLUMN_NAME = 'col';
คืนค่า 1 = มีอยู่, 0 = ไม่มี
สรุปแนะนำ
- เช็คเร็ว:
SHOW COLUMNS FROM tbl LIKE 'col' - ต้องการรายละเอียด/เขียนโปรแกรม: Query INFORMATION_SCHEMA
- ดูโครงสร้างทั้งตาราง:
DESC tbl