Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo một hàm với các đối số tùy chọn trong MySQL

Bạn không thể đặt các tham số tùy chọn trong các thủ tục được lưu trữ của MySQL.
Tuy nhiên, bạn có thể đặt các tham số tùy chọn trong MySQL UDF.

Bạn có biết rằng MySQL có tổng hợp AVG chức năng ?

Giải pháp thay thế Nếu bạn có thể đối mặt với sự xấu xí của cách giải quyết này, đây là mã mẫu sử dụng một chuỗi được phân tách bằng dấu phẩy với các giá trị làm đầu vào và trả về giá trị trung bình.

DELIMITER $$

CREATE FUNCTION MyAvg(valuestr varchar) RETURNS float
BEGIN
  DECLARE output float;
  DECLARE arg_count integer;
  DECLARE str_length integer;
  DECLARE arg float;
  DECLARE i integer;

  SET output = NULL;

  SET i = LENGTH(valuestr);
  IF i > 0 THEN BEGIN 

    SET arg_count = 1;
    WHILE i > 0 DO BEGIN
      IF MID(valuestr, i, 1)
      SET i = i - 1;
    END; END WHILE;

    /* calculate average */
    SET output = 0;
    SET i = arg_count;
    WHILE i > 0 DO BEGIN
      SET arg = SUBSTRING_INDEX( 
                  SUBSTRING_INDEX(valuestr, ',' , i)
                  , ',', -1 );
      SET output = output + arg;
      SET i = i - 1; 
    END; END WHILE;       
    SET output = output / arg_count;

  END; END IF;    
  RETURN output;
END $$

DELIMITER ;

Sử dụng concat_ws để cung cấp hàm.

SELECT MyAvg(CONCAT_WS(',',100,200,300,500)) AS test;

Bạn cũng có thể viết UDF trong C (++) hoặc Delphi / Lazarus



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL để xóa cơ sở dữ liệu trong MySQL

  2. Kiểm tra xem hàng có tồn tại không, Laravel

  3. Truy vấn Mysql với hai bảng php

  4. Lệnh gọi UPSERT chuẩn SQL

  5. Xác định hiệu quả xem doanh nghiệp có mở cửa hay không dựa trên giờ mở cửa