ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
| Lower | 转换小写| | --- | --- | |upper| 转换大写| | substr| 取子串(**substr(被截取的字符串,起始下标,截取的长度)**| | length|取长度| |trim| 去空格| |str_to_date| 将字符串转换成日期| |date_format|格式化日期| |format| 设置千分位| |round|四舍五入| |rand()|生成随机数| |Ifnull|可以将null转换成一个具体值 ifnull(字段名,替代的数据)例如 ifnull(comm,0)| |to_days(日期值)|获取这个日期至到0000-01-01 一共有多少天now() 获取当前的系统时间 | 注:数据处理函数是该数据本身特有的,有些函数可能在其它数据库不起作用; ## 1-2 lower函数:转换为小写 用法:lower(要转换字段名称) 查询员工姓名,将员工姓名全部转换成小写 select lower(ename) as ename from emp; ## 1-3 upper函数:转换为大写 用法:upper(要转换字段名称) 查询员工姓名,将员工姓名全部转换为大写 select upper(ename) as ename from emp; ## 1-4 substr函数:取子串 用法:substr(被截取字段名称,起启下标,截取长度) 查询员工姓名中第二个字母为A的所有员工 select ename from emp where substr(enam,2,1) = ‘A’; >[danger] 联想知识点,模糊查询: **select ename from emp where ename like ‘\_A%’;** ## 1-5 length函数:取字段长度 用法:length(字段名称) 取得员工姓名长度 select ename,length(ename) as nameLength from emp; ## 1-6 trim函数:去除首尾空格 作用:trim函数去除首尾空格,不会去除中间空格 用法:trim(字符串) 取得工作岗位为manager的所有员工 ``` select * from emp where job = trim('manager '); ``` ## 1-7 round函数:四舍五入 用法:round(要四舍五入的数字,四舍五入到哪一位),默认保留整数位 保留整数位或不保留小数位:select round(125.18);或者 select round(125.18,0); ## 1-8 rand函数:生成随机数 用法:rand() 生成一个0-1的随机数; select rand(); 生成一个0-100的随机数 select round(rand()*100); ## 1-9 ifnull函数:空值处理函数 用法:ifnull(字段名称,将要替换) **结论:在数据库中,有****Null****参与数学运算的结果一定为****Null****;为了防止计算结果出现****Null****,建议先使用****ifnull****函数预先处理。** 查询员工姓名及补助,如果补助为Null设置为0; select ename,ifnull(comm,0) from emp; >[danger] 注意:查询员工薪水与补助的和 错误写法:select sal+comm from emp; 正确写法:select sal + ifnull(comm,0) from emp; 没有补助的员工,将每月补助100,求员工的年薪 select ename, (sal + ifnull(comm,100)) \* 12 yearsal from emp; ## 1-10 case…when…then…else…end 用法:匹配工作岗位,当为MANAGER时,薪水上调10%,当为SALESMAN时,薪水上调50%,其它岗位薪水不变 ``` case job when ‘MANAGER’ then sal * 1.1 when ‘SALESMAN’then sal * 1.5 else sal end ``` 注意:使用中DQL语句中; 案例: 匹配工作岗位,当为MANAGER时,薪水上调10%,当为SALESMAN时,薪水上调50%,其它岗位薪水不变 ## 1-11 str_to_date函数:将字符串转换为日期 作用:将‘日期字符串’转换为‘日期类型’数据 执行结果:DATE类型 用法:str_to_date(‘日期字符串’,‘日期格式’) MySQL日期格式: %Y:代表4位的年份 %y:代表2位的年份 %m:代表月,格式(01 … … 12) %c:代表月,格式(1 … … 12) %d:代表日 %H:代表小时,格式(00 … … 23) %h:代表小时,格式(01 … … 12) %i:代表分种,格式(00 … … 59) %r:代表 时间,格式为12 小时(hh:mm:ss \[AP\]M) %T:代表 时间,格式为24 小时(hh:mm:ss)  %S:代表 秒,格式为(00……59)   %s:代表 秒,格式为(00……59) 联想知识点:java中的日期格式 yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒 SSS 毫秒 案例: 查询出1981-12-03入职的员工 select ename,hiredate from emp where hiredate = ‘1981-12-03’ ![](https://img.kancloud.cn/aa/ba/aabab5d42cd23846e48e32ee5232763a_689x147.png) 执行成功原因: 输入的日期字符串格式与MySQL默认日期格式相同,MySQL默认日期格式:%y-%m-%d 查询出02-20-1981入职的员工 select ename,hiredate from emp where hiredate = ’02-20-1981’; ![](https://img.kancloud.cn/1f/f9/1ff93a1a252b13f80f40b2e86946b333_687x59.png) 错误原因:‘02-20-1981’是一个字符串varchar类型,与DATE类型不匹配 纠正以上SQL语句的错误: select ename,hiredate from emp where hiredate = str\_to\_date(’02-20-1981’,‘%m-%d-%Y’); ![](https://img.kancloud.cn/9a/0e/9a0e937c589262bda129ab1b3e649ac7_933x119.png) 总结: 日期是数据库本身的特色,也是数据库本身机制中的一个重要内容,所以仍需掌握; 每一个数据库处理日期时采用的机制都不一样,都有自己的一套处理机制,所以在实际开发中将日期字段定义为DATE类型的情况很少; 如果使用日期类型,java程序将不能通用。实际开发中,一般会使用“日期字符串”来表示日期; ## 1-12 data\_format函数:将日期转换为特定格式字符串 作用:将‘日期类型’转换为特定格式的‘日期字符串’类型 执行结果:字符串varchar类型(具有特定格式) 用法: date_format(日期类型数据,‘日期格式’) MySQL日期格式: %Y:代表4位的年份 %y:代表2位的年份 %m:代表月,格式(01 … … 12) %c:代表月,格式(1 … … 12) %d:代表日 %H:代表小时,格式(00 … … 23) %h:代表小时,格式(01 … … 12) %i:代表分种,格式(00 … … 59) %r:代表 时间,格式为12 小时(hh:mm:ss \[AP\]M)   %T:代表 时间,格式为24 小时(hh:mm:ss)  %S:代表 秒,格式为(00……59)   %s:代表 秒,格式为(00……59) 案例: 查询员工的入职日期,以‘10-12-1980’的格式显示到窗口中; ![](https://img.kancloud.cn/fc/43/fc43a171809f045044da288aad6350a6_723x385.png) 查询员工的入职日期,以‘10/12/1980’的格式显示到窗口中; ![](https://img.kancloud.cn/44/a0/44a069039beed7cb17bc1ed4dad63bbe_722x380.png) MySQL日期默认格式示例 以下两个DQL语句执行结果相同 第一种:hiredate自动转换成varchar类型,默认采用%Y-%m-%d格式 ![](https://img.kancloud.cn/d3/18/d31886c17bd3a09ff7b5a2423911051b_388x381.png) 第二种: ![](https://img.kancloud.cn/8e/82/8e8296f34b6d066b8744dd164f5be023_751x377.png) 结论:data_format函数主要用在数据库查询操作中。实际工作中,客户需要日期以特定格式展示的时候,需要使用该函数