Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เลือกคอลัมน์แบบไดนามิกใน MySQL ด้วย Prepared Statement

ใน MySQL ไม่สามารถใช้ตัวแปรเป็นชื่อคอลัมน์โดยตรงในคำสั่ง SELECT ได้ ต้องใช้ Prepared Statement สร้างคำสั่ง SQL เป็นสตริง แล้วค่อย Execute

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    EmployeeName varchar(100) ); 
Query OK, 0 rows affected (0.77 sec)

เพิ่มข้อมูล

mysql> insert into DemoTable values('John Doe'); 
Query OK, 1 row affected (0.18 sec)

ขั้นตอนการเลือกคอลัมน์แบบไดนามิก

mysql> set @dynamicQuery = CONCAT("SELECT ", (SELECT "EmployeeName from DemoTable")); 
Query OK, 0 rows affected (0.00 sec)

mysql> select @dynamicQuery;
+---------------------------------------+
| @dynamicQuery                         |
+---------------------------------------+
| SELECT EmployeeName from DemoTable    |
+---------------------------------------+
1 row in set (0.00 sec)

mysql> prepare myStatement from @dynamicQuery; 
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> execute myStatement;

ผลลัพธ์

+--------------+
| EmployeeName |
+--------------+
| John Doe     |
+--------------+
1 row in set (0.00 sec)

คำอธิบาย:

  1. CONCAT() สร้างคำสั่ง SQL เป็นสตริง
  2. PREPARE คอมไพล์คำสั่ง SQL จากสตริง
  3. EXECUTE รันคำสั่งที่เตรียมไว้
  4. สามารถ DEALLOCATE PREPARE myStatement; เพื่อล้าง statement หลังใช้งาน

กรณีใช้งานจริง: เหมาะสำหรับแอปพลิเคชันที่ต้องให้ผู้ใช้เลือกคอลัมน์ที่จะแสดงผลแบบไดนามิก