Mysql
 sql >> база данни >  >> RDS >> Mysql

Създайте функция с незадължителни аргументи в MySQL

Не можете да зададете незадължителни параметри в MySQL съхранени процедури.
Можете обаче да зададете незадължителни параметри в MySQL UDF.

Знаете, че MySQL има AVG агрегат функция ?

Заобиколно решение Ако можете да се сблъскате с грозотата на това решение, ето примерен код, който използва низ, разделен със запетая, със стойности като вход и връща средната стойност.

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 ;

Използвайте concat_ws за захранване на функцията.

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

Можете също да напишете UDF в 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. Изпратете няколко елемента <select> с jQuery POST

  2. Твърде много маси; MySQL може да използва само 61 таблици в обединение

  3. Как да търсите стойност, разделена със запетая

  4. html drill down падащо меню избраната стойност не се вмъква в MYSQL

  5. DATEDIFF() Примери – MySQL