2. 函数

打印 上一主题 下一主题

主题 534|帖子 534|积分 1602

目录

聚集函数


  • count([distinct]列名)       统计某列的值总和
  • sum([distinct]列名)         统计一列的和(注意必须是数字类型的)
  • avg([distinct]列名)          计算一列的平均值(注意必须是数字类型)
  • max([distinct]列名)         寻找一列的最大值
  • min([distinct]列名)          寻找一列的最小值
  1. # distinct去重
  2. select count(distinct *) from 表名
  3. select sum(distinct quantity) from 表名
  4. select avg(distinct quantity) from 表名
  5. select max(distinct quantity) from 表名
  6. select min(distinct quantity) from 表名
复制代码
字符串函数

字符串长度


  • length(列名)                        返回字节数,一个汉字代表三个字节,一个数字/字母代表一个字节。
  • char_length(列名)   返回字符数
  1. select length(username) from account       //返回9
  2. select char_length(username) from account  //返回3
复制代码
合并字符串


  • concat(s1, [s2, s3, ...])          合并字符串,若任意s为NULL,则返回NULL
  • concat_ws(x, [s1, s2, ...])      合并字符串,若x为NULL,则返回NULL,若s为NULL,则忽略
  1. select concat(username, password) from account;
复制代码
字符串插入


  • insert(s1, x, len, s2)           s1为被插入的字符串,x为插入的位置(从1开始数);
​                                                                                                 len为插入的长度,s2为插入的字符串;
  1. select insert(username, 3, 3, "大帅逼") from account;
复制代码
字符串替换


  • replace(s1, s2, s3)                        将s1中的s2替换为s3
  1. select replace(username, "大帅逼", "大丑逼") from account;
复制代码
字符串大小写转换


  • upper(s)    将s转换为全部大写
  • lower(s)     将s转换为全部小写
  1. select upper(username) from account
复制代码
字符串截取


  • left(s, n)   截取s的左边n个字符
  • right(s, n) 截取s的右边n个字符
  • substring(s, x, len) 截取字符串s的x处的往右的长度为len的字符串
  1. select left(username, 2) from account
  2. select substring(username, 2) from account #返回第2个字符串开始的字符串
复制代码
字符串扩容填充


  • lpad(s1, len, s2)     s1字符串长度变为len,左侧多余部分用s2填充
  • rpad(s1, len, s2)     s1字符串长度变为len,右侧多余部分用s2填充
  1. select lpad(username, 10, "??") from account
复制代码
字符串两侧删除


  • ltrim(s)    删除s的左侧字符
  • rtrim(s)    删除s的右侧字符
  • trim(s)     删除s的两侧字符
  1. # 删除两侧空格
  2. select trim(username) from account
  3. #删除两侧s字符串
  4. select trim(s from username) from account
复制代码
字符串重复生成


  • repeat(s, n)  重复生成n个s字符串并相连
  1. select repeat(username, 3) from account
复制代码
空字符串生成


  • space(n) 生成长度为n的空串
  1. select concat(s1, space(5), s2) from account
复制代码
字符串比较


  • strcpm(s1, s2)

  • s1 == s2,返回0
  • s1 < s2,返回-1
  • s1 > s2,返回1
字符串定位


  • locate(s1, s2) 返回s1在s2中第一次出现的位置
字符串翻转


  • reverse(s) 翻转字符串
日期和时间函数

当前


  • curdate() 生成当前日期
  • curtime() 生成当前时间
  • localtimestamp() 生成当前时间戳
  1. SELECT CURDATE(), CURTIME(), LOCALTIMESTAMP()
复制代码

比较
  1. SELECT * FROM work_hours WHERE check_date > '2022-07-01'
复制代码
加减


  • date_add(日期1, INTERVAL  n  {year, month, day, minute, second, ...})  日期1增加n个年月日
  • datediff(日期1, 日期2) 日期1和日期2相差多少天(正负都有)
  • timediff(日期1, 日期2) 日期1和日期2相差多少时间(时分秒表示)
  1. set @a = NOW();
  2. set @b = DATE_ADD(@a,INTERVAL 1 year);
  3. SELECT DATEDIFF(@a,@b)
复制代码
转换


  • date_format(date, format) 将日期转化为字符串
  • str_to_date(str, format) 将字符串转化为日期
  1. SELECT DATE_FORMAT(CURDATE(), "%y/%m/%d")
  2. SELECT DATE_FORMAT(CURDATE(), "%y-%m-%d")
  3. SELECT DATE_FORMAT(CURDATE(), "%y/%m/%d")
  4. SELECT DATE_FORMAT(LOCALTIMESTAMP(), "%y/%m/%d %h-%i-%s")
复制代码


  • year()
  • month()
  • day()
  • hour()
  • minute()
  • second()
  1. SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), HOUR(NOW()), MINUTE(NOW()), SECOND(NOW())
复制代码

数学函数


  • abs(x)   求x的绝对值
  • ceiling(x)   x向上取整
  • floor(x)  x向下取整
  • round(x, 精度)  x取四舍五入,遵循小数点精度
  • exp(x)   e的x次方
  • rand()   0-1之间的随机数
  • log(x, n)    以x为底,n为值的对数
  • pi()     π
  • power(x, n)    x的n次方
  • sqrt(x)     x的平方根
  • sin(x)  cos(x)   tan(x)     三角函数(貌似没有arctan这类反函数?)
  1. SELECT ABS(-100), CEILING(1.1), FLOOR(1.1), ROUND(1.5), EXP(2), CAST(RAND()*100 AS SIGNED), LOG(4,2), PI(), POW(2,4), SQRT(4), SIN(PI())
复制代码

类型转换函数

隐式转换
  1. SELECT 1+'2', CONCAT(1, '2');
复制代码

显式转换


  • cast(数据   as 数据类型)

    • BINARY[(N)] :二进制字符串,转换后长度小于N个字节
    • CHAR[(N)] :字符串,转换后长度小于N个字符
    • DATE :日期
    • DATETIME :日期时间
    • DECIMAL[(M[,N])] :浮点数,M为数字总位数(包括整数部分和小数部分),N为小数点后的位数
    • SIGNED [INTEGER] :有符号整数
    • TIME :时间
    • UNSIGNED [INTEGER] :无符号整数

  1. SELECT CAST(pi() AS SIGNED), CAST('123a456' as SIGNED)
复制代码
部分流程控制函数


  • if(条件表达式, 结果1, 结果2)    即三目运算符(表达式?1:2)
  • isnull(值)                                true 为 1, false 为 0
  1. SELECT IF(1 = 1, 1, 0)
  2. SELECT ISNULL(NULL)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表