mysql数据库学习09-函数

1、字符串处理函数:

char_length('a中'); -- 返回字符长度

length('a中');          -- 返回字节长度

concat('abc',' ','def');  --返回括号内字符链接后的字符,返回:abc def

concat_ws(';', 'aedfad','sdfadfd','sfadfs');  -- 第一个参数为后面字符串链接时的分隔符

instr('asdfghjkl', 'fgh');   -- 子串的起始位置。返回后面字符串在前面字符串中查找到的位置。返回0,则表示没有找到

locate('abc', 'asdasabcdfdfd', 5); --作用和instr一样,就是参数颠倒一下,而且最后一个参数可以指定开始查找的位置

insert(‘dsfadfsdfasdfsfesf’,2,11,'-----');  --   从第2个位置开始,往后的11个字符,使用'-----'进行替换

lower('ADDEsdfsf');  -- 全部大写变小写

upper('dsfdfaDD');    -- 全部小写变大写

left('DFDFDGfrr', 3); --取左侧3个字符

right('DFDFDGfrr', 3); --取右侧3个字符

lpad('abc',8,'*');          -- 在左边使用*补足8位字符

rpad('abc',8,'*');          -- 在右边使用*补足8位字符

trim('  dfad  dafdf   ')  --  去除两端空白字符

substring('sfsdfadg',4,7);  -- 取从第4个位置开始的7个字符,如果不设置最后一个参数,则表示取第4个位置开始的后面所有字符

repeat('adfadfadf',3)        -- 第一个参数的字符串,重复链接3遍

REPLACE('Hello MySql','My','Your') - 子串替换

REVERSE('Hello') - 翻转字符串

SPACE(10) - 返回10个空格

2、数字处理函数:

        floor(3.94) - 舍掉小数,向下取整

        ceil(3.94) - 舍掉小数,向上取整
        format(391.536, 2) - 数字格式化为字符串,###,###.###,四舍五入,第二个参数为小数位数
        round(673.4974) - 四舍五入
        round(673.4974, 2) - 四舍五入到小数点后两位
        round(673.4974, -2) - 四舍五入到百
        TRUNCATE(234,31, 1) - 舍去至小数点后1位,是直接舍弃,不取上或者取下

3、日期处理函数

        NOW()   返回当前的日期和时间
        CURDATE()   返回当前的日期
        CURTIME()   返回当前的时间
        DATE(时间)   提取日期或日期/时间表达式的日期部分
        TIME(时间)    提取日期或日期/时间表达式的时间部分
        EXTRACT(字段 From 日期)   返回日期/时间按的单独部分
            字段的合法值:
                  MICROSECOND
                  SECOND
                  MINUTE
                  HOUR
                  DAY
                  WEEK
                  MONTH
                  QUARTER
                  YEAR
                  SECOND_MICROSECOND
                  MINUTE_MICROSECOND
                  MINUTE_SECOND
                  HOUR_MICROSECOND
                  HOUR_SECOND
                  HOUR_MINUTE
                  DAY_MICROSECOND
                  DAY_SECOND
                  DAY_MINUTE
                  DAY_HOUR
                  YEAR_MONTH
        DATE_ADD(日期, INTERVAL 数量 字段)   给日期添加指定的时间间隔
            字段的合法值同上
            
        DATE_SUB(日期, INTERVAL 数量 字段)   从日期减去指定的时间间隔
        DATEDIFF(日期1, 日期2)   返回两个日期之间的天数
        DATE_FORMAT(日期, 格式)   用不同的格式显示日期/时间
            格式字符:  %Y-%m-%d %H:%i:%s
                        %d/%m/%Y
                        %Y年%m月%d日
                    %a  缩写星期名
                    %b  缩写月名
                    %c  月,数值
                    %D  带有英文前缀的月中的天
                    %d  月的天,数值(00-31)
                    %e  月的天,数值(0-31)
                    %f  微秒
                    %H  小时 (00-23)
                    %h  小时 (01-12)
                    %I  小时 (01-12)
                    %i  分钟,数值(00-59)
                    %j  年的天 (001-366)
                    %k  小时 (0-23)
                    %l  小时 (1-12)
                    %M  月名
                    %m  月,数值(00-12)
                    %p  AM 或 PM
                    %r  时间,12-小时(hh:mm:ss AM 或 PM)
                    %S  秒(00-59)
                    %s  秒(00-59)
                    %T  时间, 24-小时 (hh:mm:ss)
                    %U  周 (00-53) 星期日是一周的第一天
                    %u  周 (00-53) 星期一是一周的第一天
                    %V  周 (01-53) 星期日是一周的第一天,与 %X 使用
                    %v  周 (01-53) 星期一是一周的第一天,与 %x 使用
                    %W  星期名
                    %w  周的天 (0=星期日, 6=星期六)
                    %X  年,其中的星期日是周的第一天,4 位,与 %V 使用
                    %x  年,其中的星期一是周的第一天,4 位,与 %v 使用
                    %Y  年,4 位
                    %y  年,2 位
        LAST_DAY(日期) - 返回当月最后一天 

4、NULL 相关

 IFNULL(数据1,数据2) - 数据1是null返回数据2;不是null返回数据1
coalesce(数据1,数据2,......) - 返回从左向右第一个不是null的数据

5、加密

 md5('dsfdfsd') -- 对明文进行加密,都是不可逆的加密方式

 sha(asdfgh'') -- 对明文进行加密,都是不可逆的加密方式

5、多行函数
=============================================

* 多行数据交给函数处理,产生一个计算结果
        
        count()   计数,数量,会忽略null值的行

         *)计算行select count(1) form tb_test;


        max()     最大值
        min()     自小值
        avg()     平均,会忽略null值的行
        sum()     求合

  * 不能直接与普通字段一起查询

group by:按照分组进行查询, 后面没有跟的字段,不能出现在select后面

*)只能用在多行查询后面使用
  例子:select department_id, count(1) from employees group by department_id;  --按照department_id进行分组统计数目

having子句:

*)多行函数分组计算,对多行函数结果进行过滤,不能用where,而使用having来过滤,前面必须有group by

例如:select department_id, count(1) c from employees group by department_id having  c=1;  -- -按照department_id进行分组统计数目为1的结果

猜你喜欢

转载自blog.csdn.net/zhuangxingzan/article/details/84869679