• MySQL 基础三 函数(聚合、字符串、时间、条件判断)


    1.聚合

     其它:GROUP_CONCAT、avg、sum、count、max、min

    SELECT typeid,GROUP_CONCAT(goodsname) FROM `goods` 
    GROUP BY typeid

    2.日期函数

    ...

    SELECT LENGTH('abc')
    SELECT CONCAT('a','b')    -- ab
    SELECT CONCAT_WS(',','a','b')  -- a,b
    
    SELECT *,CONCAT(NAME,sex),NAME+sex FROM student
    
    SELECT CONCAT('a',SPACE(5),'b')
    
    SELECT NOW()
    
    DECLARE @i DATETIME
    
    SET @i=NOW()
    
    SELECT @i;
    
    SELECT DAYOFYEAR(NOW())
    
     
    SELECT SYSDATE()
    
    SELECT QUARTER('2017-01-01')
    
    SELECT DAY(NOW())
    SELECT IF(1=1,2,3);
    SELECT IFNULL(1,2);

     3.字符串函数

    1)LOCATE,判断是否包含子字符串

    2)SELECT SUBSTRING('abc11bbbb',1,1)  返回“a”

    -- 创建函数
    DELIMITER //
    CREATE FUNCTION fn_add(i INT,j INT)
        RETURNS INT
    BEGIN
         RETURN i+j;
        
    END //
    DELIMITER ;
    
    -- 创建函数
    DELIMITER //
    CREATE FUNCTION fn_add2(i INT,j INT)
        RETURNS INT
    BEGIN
          -- 声明参数
          DECLARE k INT;
          SET k=1;
          RETURN i+j+k;
    END //
    DELIMITER ;
    
    SELECT fn_add2(1,2) AS 'add';

     4.字符串、日期转换

    SELECT STR_TO_DATE('2018-02-1 11:23:34','%Y-%m-%d %H:%i:%S')
    SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%S')
    

    5.转换函数

    参考:https://www.cnblogs.com/conanwang/p/5917416.html

     

     6.自定义函数

    DELIMITER $$
    
    USE `retailking`$$
    
    DROP FUNCTION IF EXISTS `GetAllPriceByCaseNumId`$$
    
    CREATE DEFINER=`root`@`%` FUNCTION `GetAllPriceByCaseNumId`(casenumid INT,registrationid VARCHAR(32)) RETURNS DECIMAL(8,2)
    BEGIN
        -- 获取病例的总金额
        -- 撤单的,不能计算在内
        DECLARE ActualMoney DECIMAL(8,2) DEFAULT 0;
            DECLARE price DECIMAL(8,2) ;
            
            SELECT IFNULL(SUM(hc.`ActualMoney`),0) INTO price FROM posregister hc WHERE hc.`Id`=registrationid AND hc.`PayState`!=4; -- 挂号
        SET ActualMoney    = ActualMoney + price;
        
            SELECT IFNULL(SUM(hc.`ActualMoney`),0) INTO price FROM hischeck hc WHERE hc.`CaseNumId`=casenumid AND hc.`PayState`!=4; -- 检查化验
        SET ActualMoney    = ActualMoney + price;
            
            SELECT IFNULL(SUM(hc.`ActualMoney`),0) INTO price FROM hisdispose hc WHERE hc.`CaseNumId`=casenumid AND hc.`PayState`!=4; -- 处置耗材
        SET ActualMoney    = ActualMoney + price;
        
        SELECT IFNULL(SUM(hc.`ActualMoney`),0) INTO price FROM `hisprescription` hc WHERE hc.`CaseNumId`=casenumid AND hc.`PayState`!=4; -- 处方
        SET ActualMoney    = ActualMoney + price;
             
            RETURN ActualMoney;
        END$$
    
    DELIMITER ;
    天生我材必有用,千金散尽还复来
  • 相关阅读:
    菜鸟也为Git疯狂
    C#实现简单的栈和队列
    Entity Framework模型在领域驱动设计界定上下文中的应用
    SQL 关于使用CTE
    《高效程序员的45个习惯》读书笔记
    开源.NET下的XML数据库介绍及入门
    openkm开发环境搭建过程
    ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇
    《Clean Code》Learning
    网络抓包工具 Network Monitor使用方法 Fiddler使用方法
  • 原文地址:https://www.cnblogs.com/ligenyun/p/7919203.html
Copyright © 2020-2023  润新知