美文网首页mysql8.0
9)mysql常见函数

9)mysql常见函数

作者: 哥斯拉啊啊啊哦 | 来源:发表于2019-08-21 10:28 被阅读0次
    常用聚合函数
    
    COUNT(*)/COUNT(col):计算符合条件的数据行数
    SUM(col_name):      计算符合条件的数值列合计值
    AVG(col_name):      计算符合条件的数值列平均值
    MAX(col_name):      计算符合条件的任意列中数据的最大值
    MIN(col_name):      计算符合条件的任意列中数据的最小值
    
    常用时间函数1
    
    CURDATE() / CURTIME():   返回当前日期 / 返回当前时间
    NOW():                   返回当前的日期和时间
    
    DATE_FORMAT(date, fmt):  按照fmt的格式,对日期date进行格式化
    fmt格式为:
    %Y:四位的年 %m:月份(00..12) %d:天(00..31)
    %H:小时(00..24) %i分钟(00..59) %s:秒(00..59)
    
    SEC_TO_TIME(seconds):    把秒数转换为(小时:分:秒)
    TIME_TO_SEC(time):       把时间(小时:分:秒)转换为秒数
    
    示例
    SELECT CURDATE(),CURTIME(),NOW();
    输出
    curdate()   curtime()  now()                
    ----------  ---------  ---------------------
    2019-08-21  08:49:50   2019-08-21 08:49:50  
    
    示例
    SELECT DATE_FORMAT(NOW(),'%Y--%m--%d  %H:%i:%s')
    输出
    DATE_FORMAT(NOW(),'%Y--%m--%d  %H:%i:%s')  
    -------------------------------------------
    2019--08--21  09:04:16     
     
    示例       
    SELECT DATE_FORMAT(NOW(),'%Y--%m--%d')
    输出
    DATE_FORMAT(NOW(),'%Y--%m--%d')  
    ---------------------------------
    2019--08--21
    
    示例          
    SELECT DATE_FORMAT(NOW(),'%H:%i:%s')
    输出
    DATE_FORMAT(NOW(),'%H:%i:%s')  
    -------------------------------
    09:06:10                       
    
    示例
    SELECT DATE_FORMAT(NOW(),'2010-01-01')
    输出
    DATE_FORMAT(NOW(),'2010-01-01')  
    ---------------------------------
    2010-01-01
    
    示例
    SELECT SEC_TO_TIME(3750)
    输出
    sec_to_time(3750)  
    -------------------
    01:02:30          
     
    示例
    SELECT TIME_TO_SEC('1:2:30')
    输出
    time_to_sec('1:2:30')  
    -----------------------
                       3750
    
    更多时间函数如下
    
    DATEDIFF函数示例 DATE_ADD函数示例 EXTRACT函数示例
    常用字符串函数
    
    示例
    
    创建test表格
    CREATE TABLE test(
        title VARCHAR(20) NOT NULL,
        class_name VARCHAR(10) NOT NULL
    )
    插入数据
    title                   class_name       
    ----------------------  -----------------
    MySQL课程-79889           大数据        
    MySQL课程-69546           Hbase            
    PostgreSQL课程-43917      大数据        
    MySQL课程-88343           MySQL            
    
    SELECT *,CONCAT(title,class_name)
    FROM test;
    输出
    title                   class_name       concat(title,class_name)               
    ----------------------  ---------------  ---------------------------------------
    MySQL课程-79889           大数据              MySQL课程-79889大数据             
    MySQL课程-69546           Hbase            MySQL课程-69546Hbase                 
    PostgreSQL课程-43917      大数据              PostgreSQL课程-43917大数据        
    MySQL课程-88343           MySQL            MySQL课程-88343MySQL  
    
    
    SELECT *,CONCAT_WS('||',title,class_name)
    FROM test;
    输出
    title                   class_name       CONCAT_ws('||',title,class_name)         
    ----------------------  ---------------  -----------------------------------------
    MySQL课程-79889           大数据              MySQL课程-79889||大数据             
    MySQL课程-69546           Hbase            MySQL课程-69546||Hbase                 
    PostgreSQL课程-43917      大数据              PostgreSQL课程-43917||大数据        
    MySQL课程-88343           MySQL            MySQL课程-88343||MySQL      
    
    
    SELECT class_name,CHAR_LENGTH(class_name),LENGTH(class_name)
    FROM test;
    输出
    class_name       char_length(class_name)  length(class_name)  
    ---------------  -----------------------  --------------------
    大数据                                 3                     9
    Hbase                                 5                     5
    大数据                                 3                     9
    MySQL                                 5                     5
    
    
    格式化为 ##.###.###,保留小数点后5位
    SELECT FORMAT(12345.6789,5)
    输出
    format(12345.6789,5)  
    ----------------------
    12,345.67890       
    
    
    SELECT LEFT('www.helloChina.com',3) AS a -- 从左边起截取3位字符
        ,RIGHT('www.helloChina.com',3) AS b -- 从右边起截取3位字符
        ,LEFT('今天是个好日子',3) AS c
        -- 如果没有指定长度,则返回从从指定位置之后所有字符
        ,SUBSTRING('今天是个好日子',3) AS d 
        -- 指定长度4,返回4个字符
        ,SUBSTRING('今天是个好日子',3,4) AS e
    输出
    a       b       c          d                e             
    ------  ------  ---------  ---------------  --------------
    www     com     今天是        是个好日子            是个好日                          
    
    
    -- 截取课程标题里横线之前的部分
    SELECT title
        ,LOCATE('-',title) 
        ,SUBSTRING(title,1,LOCATE('-',title))   
        ,SUBSTRING(title,1,LOCATE('-',title)-1)
        ,SUBSTRING_INDEX(title,'-',1)
    FROM test;
    输出
    title                   LOCATE('-',title)  SUBSTRING(title,1,LOCATE('-',title))  SUBSTRING(title,1,LOCATE('-',title)-1)  SUBSTRING_INDEX(title,'-',1)  
    ----------------------  -----------------  ------------------------------------  --------------------------------------  ------------------------------
    MySQL课程-79889                           8  MySQL课程-                              MySQL课程                                 MySQL课程                   
    MySQL课程-69546                           8  MySQL课程-                              MySQL课程                                 MySQL课程                   
    PostgreSQL课程-43917                     13  PostgreSQL课程-                         PostgreSQL课程                            PostgreSQL课程              
    MySQL课程-88343                           8  MySQL课程-                              MySQL课程                                 MySQL课程                 
    
    
    -- TRIM( [remstr FROM] str)从字符串str两端删除不必要的字符
    SELECT TRIM('   hello  ')
        ,TRIM('x' FROM 'xxxhelloxxxxxxxxxxx')
    输出  
    TRIM('   hello  ')  TRIM('x' FROM 'xxxhelloxxxxxxxxxxx')  
    ------------------  --------------------------------------
    hello               hello     
    
    示例
    SELECT ROUND(123.456,2),RAND();
    输出第一次:
    round(123.456,2)              rand()  
    ----------------  --------------------
    123.46              0.8179619683120045
    输出第二次:
    round(123.456,2)               rand()  
    ----------------  ---------------------
    123.46              0.17371040785099418
    
    
    创建测试表格 test_user
    CREATE TABLE test_user(
        sex TINYINT NOT NULL
    )
    插入数据
    INSERT test_user VALUES(0),(1),(0),(1),(2);
    
    SELECT sex,
        CASE WHEN sex=1 THEN '男'
             WHEN sex=0 THEN '女'
             ELSE '未知'
        END AS '性别'
    FROM test_user;
    输出
       sex  性别  
    ------  --------
         0  女     
         1  男     
         0  女     
         1  男     
         2  未知  
    

    相关文章

      网友评论

        本文标题:9)mysql常见函数

        本文链接:https://www.haomeiwen.com/subject/eekvsctx.html