Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo hàm tùy chỉnh (Custom Function) trong MySQL

MySQL cho phép tạo hàm do người dùng định nghĩa (UDF - User Defined Function) để tái sử dụng logic phức tạp trong truy vấn.

Cú pháp cơ bản

DELIMITER // 
CREATE FUNCTION tenHam(thamSo) RETURNS kieuDuLieu 
DETERMINISTIC 
NO SQL 
BEGIN 
    -- cac lenh 
    RETURN ketQua; 
END // 
DELIMITER ;

Ví dụ: Tách họ từ họ tên đầy đủ

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 ;

Gọi hàm

mysql> select get_First_Name('David Miller');
+--------------------------------+
| get_First_Name('David Miller') |
+--------------------------------+
| David                          |
+--------------------------------+
1 row in set, 2 warnings (0.00 sec)

Giải thích các từ khóa:

  • DETERMINISTIC - hàm luôn trả về cùng kết quả với cùng đầu vào (tối ưu cache)
  • NO SQL - hàm không chứa câu lệnh SQL (có thể là READS SQL DATA hoặc MODIFIES SQL DATA)
  • DELIMITER - thay đổi ký tự kết thúc câu lệnh để tránh nhầm lẫn với dấu ; bên trong function