企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 1.常用函数 * concat()字符串连接 select concat(first_name,'*',last_name) 姓名 from employees; * substr()字符串截取 select SUBSTR("asdfgh",1,3) //输出asd * upper()转为大写 lower()转为小写 * instr()返回字串第一次出现的索引值,没有出现返回0 * trim()去掉指定字符串前后两端的“指定内容”(默认是去掉空格) select TRIM("99" FROM "99999 I like listen 999 to music666 9999"); select lenth(trim(' 张三 ')) //输出6,一个汉字=3个字节 * lpad()左填充 rpad() 右填充 * replace()用新字符串去替换旧的字符串 ``` select replace("I like listen to music",'listen','listening'); //输出I like listening to music ``` * length()求出字符串的“字节数” 【utf-8中,】 * datediff()计算日期的相差天数 ``` SELECT DATEDIFF('1995-2-7','1995-2-6') 相差; //相差1天(date difference) ``` ## 2.数学函数 - ceil()向上取整 - floor()向下取整 - mod(X,D) - round(X,D) - truncate(X,D) 截取小数 ``` -- select CEIL(1.26)向上取整 2 -- select FLOOR(1.26) 向下取整 1 -- SELECT ROUND(1.526,2) 保留两位小数,结果四舍五入,1.53 -- SELECT TRUNCATE(1.526,2)保留两位小数,结果不要四舍五入,1.52 -- SELECT MOD(10,-3) 被除数为正数,结果就为正 1 -- SELECT MOD(-10,3) 被除数为负数,结果就为负 -1 ``` <br/> ## 3.日期函数 * now()显示‘年-月-日 时:分:秒’ * curdate()年月日 * curtime()时分秒 * str_to_date() 将字符通过指定的格式转换成日期 ``` -- SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put; -- select str_to_date('3-2 1998','%c-%d %Y') 日期 ``` * dateformat() 将日期转换成字符 ``` -- select date_format(NOW(),'%m月-%d日 %Y年 %h:%i:%s' ) ``` %Y:代表4位的年份 %y:代表2为的年份 %m:代表月, 格式为(01……12) %c:代表月, 格式为(1……12) %d:代表月份中的天数,格式为(00……31) %e:代表月份中的天数, 格式为(0……31) %H:代表小时,格式为(00……23) %k:代表 小时,格式为(0……23) %h: 代表小时,格式为(01……12) %I: 代表小时,格式为(01……12) %l :代表小时,格式为(1……12) %i: 代表分钟, 格式为(00……59) 【只有这一个代表分钟,大写的I 不代表分钟代表小时】 %S:代表 秒,格式为(00……59) %s:代表 秒,格式为(00……59) %r:代表 时间,格式为12 小时(hh:mm:ss [AP]M) %T:代表 时间,格式为24 小时(hh:mm:ss) <br> ## 4.流程控制函数 * if函数: if else 的效果 ``` SELECT IF(10<5,'大','小'); SELECT last_name,commission_pct,IF(commission_pct IS NULL,'没奖金,呵呵','有奖金,嘻嘻') 备注 FROM employees; ``` * case函数的使用: switch case 的效果 ``` /* java中 switch(变量或表达式){ case 常量1:语句1;break; ... default:语句n;break; } mysql中 case 要判断的字段或表达式 when 常量1 then 要显示的值1或语句1; when 常量2 then 要显示的值2或语句2; ... else 要显示的值n或语句n; end */ ``` **案例1:查询员工的工资** ``` SELECT salary 原始工资,department_id, CASE department_id WHEN 30 THEN salary*1.1 WHEN 40 THEN salary*1.2 WHEN 50 THEN salary*1.3 ELSE salary END AS 新工资 FROM employees; ``` **案例2:查询员工的工资的情况** ``` select salary, case salary when salary>20000 then 'A' when salary>15000 then 'B' when salary>10000 then 'C' else 'D' end as 工资等级 from employees; ``` ***********************************************************************************