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

สร้างฟังก์ชัน MySQL เองเพื่อใช้ในคิวรี

วิธีสร้าง Custom Function ใน MySQL

MySQL รองรับการสร้างฟังก์ชันผู้ใช้ (User-Defined Functions) ด้วยคำสั่ง CREATE FUNCTION

รูปแบบไวยากรณ์ (Syntax)

DELIMITER //
CREATE FUNCTION yourFunctionName(parameters) 
RETURNS dataType
DETERMINISTIC
NO SQL
BEGIN
    -- statements
    RETURN result;
END //
DELIMITER ;
  • DETERMINISTIC - ฟังก์ชันคืนค่าเดียวกันสำหรับอินพุตเดียวกัน (ช่วยให้ Optimizer ทำงานได้ดีขึ้น)
  • NO SQL - บ่งชี้ว่าฟังก์ชันไม่มีคำสั่ง SQL (มีตัวเลือกอื่น: READS SQL DATA, MODIFIES SQL DATA)

ตัวอย่าง: ฟังก์ชันดึงชื่อแรกจากชื่อเต็ม

mysql> DELIMITER //
mysql> CREATE FUNCTION get_First_Name(Name VARCHAR(255))
    RETURNS VARCHAR(255)
    DETERMINISTIC
    NO SQL
    BEGIN
        RETURN LEFT(Name, LOCATE(' ', Name) - 1);
    END //
Query OK, 0 rows affected (0.20 sec)
mysql> DELIMITER ;

การเรียกใช้ฟังก์ชัน

mysql> select get_First_Name('David Miller');
+--------------------------------+
| get_First_Name('David Miller') |
+--------------------------------+
| David                          |
+--------------------------------+

คำอธิบายโค้ด: LOCATE(' ', Name) หาตำแหน่งของช่องว่างแรก, LEFT(Name, pos-1) ดึงตัวอักษรตั้งแต่ต้นจนก่อนช่องว่าง

ข้อจำกัด: ฟังก์ชันไม่สามารถทำ Transaction (COMMIT/ROLLBACK) ได้ และไม่ควรทำการ Query ตารางขนาดใหญ่ภายในฟังก์ชันเพราะจะส่งผลต่อประสิทธิภาพ