函数——封装的常用操作

116 阅读4分钟

函数——封装的常用操作

  • 分类:
  1. 单值函数【一个或零个参数进,一个结果返回】
  2. 多值函数(又称聚合函数)【零个或多个参数进,一个结果返回】
  • 单值函数:数学函数,字符串函数,日期函数,条件函数,信息函数和加密函数,其他函数
    • #数学函数:

      • 1)绝对值:ABS(num)
        • 例如:ABS(-12) -- 结果为-12的绝对值
      • 2)圆周率:PI()
      • 3)数据精度处理:
        • floor(num)【保留num的整数部分,忽略小数部分】
          • 例如:floor(12.99) -- 结果为12
        • #truncate(num1,num2) -- num1以去尾(即忽略后续)方式保留num2位小数
        • ceil(num),ceiling(num)【结果为大于等于num的最小整数】
          • 例如:ceil(12.22) -- 结果为13
        • round(num)【四舍五入法,求最近整数】
          • 例如:round(12.5) -- 结果为13
        • #小数精度处理:round(num1,num2) -- num1以四舍五入的方式保留num2位小数
      • 4)随机数:rand() 【生成一个0-1的随机数,包括0但不包括1】
      • 5)平方根:sqrt(num) 例如:sqrt(9) -- 结果为3
      • 6)余数:mod(num1,num2) 例如:mod(12,5) -- 结果为2
      • 7)幂运算:pow(num1,num2),power(num1,num2)【结果为num1的num2次方】
        • 例如:pow(2,4) -- 结果为16(=2^4)
      • 8)三角函数:sin(),cos() 等
    • #字符串函数:主要用于字符串处理

      • 1)获取字符串长度:char_length(str),length(str)
        • char_length返回字符串str的字符个数,
        • length返回字符串str在当前数据编码环境中占用字节数
          • 例如:在utf-8环境中,
            • char_length('哈哈哈哈') -- 结果为:4
            • length('哈哈哈哈') -- 结果为:12
      • 2)字符串连接:concat(str1,str2,......),concat_ws(str1,str2,......)
        • concat(str1,str2,......) -- 直接将所有字符串拼接成一个字符串
          • 例如:concat('呵呵','哈哈','嘿嘿') -- 结果为‘呵呵哈哈嘿嘿’
        • concat_ws(str1,str2,......) -- 将所有字符串拼接成一个字符串,str1作为拼接符
          • 例如:concat_ws('呵呵','哈哈','嘿嘿','东东') -- 结果为‘哈哈呵呵嘿嘿呵呵东东’
      • 3)大小写转化:lower(str),upper(str)
        • lower(str) -- 将str内所有字母小写
          • 例如:lower('abcdEFGH') -- 结果为:abcdefgh
        • upper(str) -- 将str内所有字母大写
          • 例如:upper('abcdEFGH') -- 结果为:ABCDEFGH
      • 4)翻转字符串:reverse(str)【将str内的字符翻转】
        • 例如:reverse('太逆天了') -- 结果为:乐天逆太
      • 5)截取字符串:trim(str),ltrim(str),rtrim(str)
        • trim(str) -- 将str左右的空格全部去除,返回str内的字符
        • #trim(str1 from str2) -- 去除str2两边的str1字符串
          • 例如:trim('sn' from 'dddsnhahahasn') -- 结果为‘dddsnhahaha’
        • ltrim(str) -- 将str左边的空格去除,返回str内的字符和(如果存在)它右边的空格
        • rtrim(str) -- 将str右边的空格去除,返回str内的字符和(如果存在)它左边的空格
      • 6)获取子字符串:left(str,num),right(str,num)
        • left(str,num) -- 获取str字符串左边num位的字符
          • 例如:left('sasfds',2) -- 结果为:sa
        • right(str,num) -- 获取str字符串右边num位的字符
          • 例如:right('sasfds',3) -- 结果为:fds
        • #select left(字段名,整数) from 表名;【获取指定表下指定字段的前指定整数位】
      • 7)填补字符串:lpad(str1,num,str2),rpad(str1,num,str2)
        • lpad(str1,num,str2) -- 总长为num,str1长度不足num的部分,取str2的部分从左边补足
          • 例如:lpad('haha',6,'sasa') -- 结果为:sahaha
        • rpad(str1,num,str2) -- 总长为num,str1长度不足num的部分,取str2的部分从右边补足
          • 例如:rpad('haha',7,'sasa') -- 结果为:hahasas
        • #在填补字符串中,若str1本身长度不如num,则只显示num长度的部分
          • 例如:lpad('haha',2,'sasa') -- 结果为:ha
      • 8)字符串操作:substring
        • substring(str,num),substring(str from num)
          • -- 输出str从num位(包括num位)往后的部分
          • 例如:substring('hahaha',2) -- 结果为:ahaha
        • substring(str,num1,num2),substring(str from num1 for num2)
          • -- 输出str从num位(包括num位)往后的部分,总长为num2
          • 例如:substring('hahaha',2,2) -- 结果为:ah
      • 9)重复字符串:repeat(str,num)
        • --将str的内容重复输出num遍
        • 例如:repeat('哈喽',4) -- 结果为:哈喽哈喽哈喽哈喽
    • #日期处理函数:使用函数获取想要的日期信息

      • 1)基础处理:
        • select date1 - date2
        • select date1 < date2
        • ......
      • 2)获取当前日期信息(常用):
        • 获取yyyy-MM-dd:curdate(),current_date()
        • 获取yyyy-MM-dd hh:mm:ss:now(),sysdate(),localtime(),current_timestamp()
        • 获取hh:mm:ss:current_time()
        • 获取年份:year(date)
        • 获取月份:month(date),monthname(date)
          • 例如:month(now()) -- 获取当前日期的月份
        • 获取天:day(date)
          • #更多:dayofweek(date),weekday(date)...
        • 获取星期:dayname(date) -- 指定的日期对应星期几,返回值是英文(如Friday)
        • 获取时分秒:hour(date),minute(date),second(date)
        • 获取一些特殊时间:
          • week(date),weekofyear(date) -- 获取指定日期在当前年份的总共周数
            • 例如:week('2023-01-01') -- 结果为:52
            • #特殊:当weekofyear('2023-01-01')时,结果为:1
          • #更多:dayofyear(date),dayofweek(date) -- 当前天数
      • 3)日期转化:
        • time_to_sec(time) -- 指定时间到0点过去的时间换算成秒数
          • 例如:time_to_sec('00:00:04') -- 结果为:4
        • sec_to_time(num) -- 秒数换算成时间
      • 4)日期的计算:
        • date_add(date,INTERVAL num type) -- 获取指定日期之后指定时间的时间
          • 例如:date_add('2023-07-17 10:10:10',INTERVAL 10 second);
          • 结果为:2023-07-17 10:10:20
        • date_sub(date,INTERVAL num type) -- 获取指定日期之前指定时间的时间
          • 例如:date_sub('2023-07-17 10:10:10',INTERVAL 10 second);
          • 结果为:2023-07-17 10:10:00
        • datediff(date1,date2) -- 获取两个指定日期之间的时间差(天)
          • 例如:datediff('2024-07-17 11:10:10','2023-07-17 10:20:40');
          • 结果为:366
        • timediff(date1,date2) -- 获取两个指定日期之间的时间差(时:分:秒)
          • 例如:timediff('2024-07-17 11:10:10','2023-07-17 10:20:40');
          • 结果为:838:59:59
        • timestampdiff(type,date1,date2) -- 获取两个指定日期之间的指定参数(年月日时分秒皆可)
          • 例如:timestampdiff(hour,'2024-07-17 11:10:10','2025-07-17 10:20:40');
          • 结果为:8759
        • makedate/maketime/...
        • date_format(date,str) -- 格式化日期
          • 例如:date_format('2023-07-17 9:20:1','%y年%m月%d日 %w %h%i%s')
          • 结果为:23年07月17日 1 092001【2023年7月17日 周一 09:20:01】
    • #信息函数:获取一些数据库系统中的信息

      • 1)获取当前用户:user(),current_user(),system_user()
      • 2)获取数据库:database()
      • 3)获取版本信息:version()
      • 4)返回最近一个查询获取的信息条数:found_rows()
      • 5)返回autoincrement字段最后一次插入数据的id:last_insert_id()
      • 6)获取一串唯一的id好:uuid()
    • #判断函数:用于判断条件是否满足

      • 1)if(jud,str1,str2) -- 根据条件表达式jud,若为TRUE则输出str1,若为FALSE则输出str2
        • 例如:if(12>10,'haha','xixi') -- 结果为:haha
      • 2)ifnull(str1,str2) -- 判断str1,若为null则输出str2,否则输出str1
    • #加密运算

      • 1)不可逆:password(str),md5(str)
      • 2)可逆(异或):encode(str1,str2),decode(str1,str2)
    • #选择查询:依赖于已经有的数据进行数据筛选