zoukankan      html  css  js  c++  java
  • 函数的语法(标准模版)

    自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL,所以UDF是对MySQL功能的一个扩展

    创建和删除自定义函数语法:

    创建UDF:

    1.   CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,[parameter_name type,...])
    2.   RETURNS {STRING|INTEGER|REAL}
    3.   runtime_body

    简单来说就是:

      CREATE FUNCTION 函数名称(参数列表)

      RETURNS 返回值类型

      函数体

    删除UDF:


      DROP FUNCTION function_name

    调用自定义函数语法:


      SELECT function_name(parameter_value,...)

    举几个例子

    例子1
    简单的函数
    1. CREATE FUNCTION simpleFun() RETURNS VARCHAR(20)
    2. BEGIN
    3. RETURN "Hello World!";
    4. end;
    使用函数
    1. select simpleFun();


    说明:

    UDF可以实现的功能不止于此,UDF有两个关键点,一个是参数,一个是返回值,UDF可以没有参数,但UDF必须有且只有一个返回值
     

    例子2

    1. CREATE TABLE son (
    2. id INT NOT NULL,
    3. name VARCHAR(20),
    4. pay INTEGER
    5. );
    6. INSERT INTO son (id, name, pay) VALUES (1,'bol',20);
    7. INSERT INTO son (id, name, pay) VALUES (2,'davie',2220);
    8. SELECT * FROM son;
    9. DROP FUNCTION IF EXISTS deleteById;
    10. CREATE FUNCTION deleteById(uid SMALLINT UNSIGNED)
    11. RETURNS VARCHAR(20)
    12. BEGIN
    13. DELETE FROM son WHERE id = uid;
    14. RETURN (SELECT COUNT(id) FROM son);
    15. END
    16. select deleteById(2);
    这里我们是单步执行的,所以,我们可以不定义DELIMITER,DELIMITER的意思是定义默认的结束符号!
    DELIMITER // 意思是修改默认的结束符";"为"//",以后的SQL语句都要以"//"作为结尾

    在函数体重我们可以使用更为复杂的语法,比如复合结构/流程控制/任何SQL语句/定义变量等等

    这个函数把'2009-06-23 00:00:00'转换为一个特定的字符串
    1. DELIMITER $$
    2. DROP FUNCTION IF EXISTS `test`;
    3. CREATE FUNCTION `test`(gdate datetime) RETURNS varchar(255)
    4. BEGIN
    5. DECLARE x VARCHAR(255) DEFAULT '';
    6. SET x= date_format(gdate,'%Y%m%d%h%i%s');
    7. RETURN x;
    8. END $$
    9. DELIMITER ;
    10. SELECT test('2009-06-23 00:00:00')


    这个函数截取字符串
    1. DELIMITER $$
    2. DROP FUNCTION IF EXISTS cutString ;
    3. CREATE FUNCTION cutString(s VARCHAR(255),n INT) RETURNS varchar(255)
    4. BEGIN
    5. IF(ISNULL(s)) THEN RETURN '';
    6. ELSEIF CHAR_LENGTH(s)<n THEN 
    7. RETURN s;
    8. ELSEIF CHAR_LENGTH(S)=n THEN 
    9. RETURN '相等';
    10. ELSE 
    11. RETURN CONCAT(LEFT(s,n),'...');
    12. END IF;
    13. END $$
    14. DELIMITER ;
    15. SELECT cutString('323432234',4);



    函数的模版

  • 相关阅读:
    分布式一致性模型
    ubuntu18.04 基于Hadoop3.1.2集群的Hbase2.0.6集群搭建
    ubuntu18.04 flink-1.9.0 Standalone集群搭建
    Idea 打印GC
    goroutine简介
    MESI缓存一致性协议
    Spark RDD 算子总结
    SparkStreaming 笔记
    Spark 内存管理
    Highcharts(数据分析图)
  • 原文地址:https://www.cnblogs.com/xujintao/p/7041016.html
Copyright © 2011-2022 走看看