当前位置: 首页 > news >正文

数据库中常用的函数及函数应用

一. 常用的函数有哪些

常用的几类函数分为:字符串函数 、日期函数、数学函数。

1.字符串函数

概念:用于控制返回给用户的字符串

(1)字符串函数的功能

字符串函数
函数名描述
concat(s1,s2....,sn)将s1,s2....sn连接成字符串
length()返回传递给它的字符串长度
upper()把传递给它的字符串转换为大写
lower()把传递给它的字符串转换为小写
ltrim()清除字符左边的空格
rtrim()清除字符左边的空格
trim()清除字符两端的空格
right()从字符串右边返回指定的数目的字符
replace()替换一个字符串中的字符
insert(str,x,y,instr)将字符串str从第x位置开始,y个字符常的子串替换为字符串instr,返回结果

(2)字符串函数功能演示

# concat:拼接字符串
select concat('hello','MySql');# lenght:字符长度
select length('abcdefg');# upper:转大写
select upper('hello');# lower:转小写
select lower('HELLO');# ltrim:去除左边空格
select ltrim(' hello ');# rtrim: 去除右边空格
select rtrim(' hello ');# trim:去除两端空格
select trim(' hello ');# replace:替换
select replace('hello word','word','世界');# insert:有条件的替换
select insert('hello word',6,1,'世界');

2.日期函数

概念:用于操作日期值

    (1)日期函数的功能

日期函数
函数名功能
curdate()取得当前的系统日期
now()取得当前的日期和时间
curtime()取得当前的系统时间
date_add()将指定的数值添加到指定的日期部分后的日期
date_sub()从日期减去指定的时间间隔
date_formmart()依照指定的fmt格式格式化日期date值

(2)日期函数功能演示

# curdate():获取当前系统日期
select curdate();# now():获取当前的日期和时间
select now();# curtime():获取当前时间
select curtime();# date_add():添加日期-- 查看5个月的日期
select date_add(now(),interval 5 month);# date_sub():减少日期-- 查看前五天
select date_sub(now(),interval 5 day);# date_format():日期的格式化
# 大写的Y表示完整的年份 小写的y表示是两位的年份
select date_format(curdate(),'%Y年%m月%d日');-- 格式化当前日期和时间
# 大写的H表示24小时制的时间 小写的h表示12小时制的时间
# 分钟用%i表示
select date_format(now(),'%Y年%m月%d日 %H时%i分%s秒');

3.数学函数

概念:用于对数值进行代数运算

(1)数学函数的功能

数学函数
函数名功能
rand()返回从0到1之间的随机float值
abs()取数值表达式的绝对值
ceiling()取大于或等于指定数值、表达式的最小整数
floor()取小于或等于指定表达式的最大整数
power()取数值表达式的幂值
round()将数值表达式四舍五入为指定精度
sign()对于正数返回+1,对于负数返回-1,对于0则返回0
sqrt()取浮点表达式的平方根

(2) 数学函数功能演示

# rand():随机数
select rand();# abs(): 绝对值
select abs(-50);# ceiling():向上取整
select ceiling(41.1);# floor():向下取整
select floor(40.9);# power():取数值表达式的幂值
select power(5,2);# round():四舍五入
select round(40.5)# sign(): 整数返回+1,负数返回-1
select sign(-3);# sqrt():取浮点表达式平方根
select sqrt(16); 

二. 综合练习

1.案例


某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题:
卡里面的字母“O和数字0”、“字母i和数字1”,用户反映说看不清楚,公司决定,把存储在数据库中的密码中所有的“O”都改成“0”,把所有的“i”都改成“1”;


update student set login_pwd =REPLACE(login_pwd,'o','0');
update student set login_pwd =REPLACE(login_pwd,'O','0');
update student set login_pwd =REPLACE(login_pwd,'i','1');
update student set login_pwd =REPLACE(login_pwd,'I','1');

案例分析:密码更新功能用update,涉及到字符串的替换,用到字符串函数replace(),把字母O该成0,字母i改为1.

2.日期函数练习

-- 查询年龄超过20的学生
select * from student where birthday<=DATE_sub(CURDATE(),INTERVAL 20 YEAR);-- 获取月份
select month(now())
-- 查询月份是一月过生日的学生
select * from student where MONTH(birthday)='01';-- 今天生日的学生
select * from student where month(birthday)=MONTH(now()) and day(birthday)=day(now());

3.字符串函数练习

-- 截取字符串
select right('1234@qq.com',3);
-- 反转
select reverse('123@qq.com');
-- 获取字符的位置
select INStr('moc.qq@321','.');select right(email,INSTR(REVERSE(email),'.')-1) from student;

4.数学函数练习

-- 10000~99999999 随机数
select RAND()*(99999999-10000)+10000;-- 取整
select floor(RAND()*(99999999-10000)+10000);-- 拼接
select concat(floor(RAND()*(99999999-10000)+10000),'@qq.com');


http://www.mrgr.cn/news/55617.html

相关文章:

  • 《嵌入式最全面试题-Offer直通车》目录
  • VSCode编译器改为中文
  • 排序02 Multi-gate Mixture-of-Experts (MMoE)
  • linux使用df与du命令查看磁盘大小不一致问题
  • 在Rocky Linux上安装Docker
  • 数据治理(1)-数据规划
  • FCITX5的一些小命令
  • Spring Boot:如何实现JAR包的直接运行
  • 静态代码块为什么不能放在构造函数中
  • 在C++中比大小
  • 嵌入式开发学习——c语言完结
  • 10.21 IO进程直接的通信
  • .mkp勒索病毒攻击全攻略:防护、数据恢复与安全建议
  • LC:动态规划-买卖股票
  • IPv4头部和IPv6头部
  • Lua中的goto语句
  • ZYNQ:流水灯实验
  • .net framework3.5sp1runtime组件怎么开启
  • Python Web 框架中 Django 框架
  • Java面试题五
  • AB包资源管理器
  • CISP/NISP二级练习题-第一卷
  • c语言typedef的使用 Java短路逻辑运算符
  • Linux 查看进程内存占用的 6 种方法,建议点赞收藏备用,排查问题好帮手
  • 详解23种设计模式——第二部分:结构型模式
  • 计算机基础 -- 计算机补码的原理