常见函数04

扫码查看
  1 #常见函数
  2 /*
  3 好处:1.隐藏实现细节 2.提高代码重用性
  4 调用:select 函数名(实参列表)【from表】
  5 特点:
  6     1.函数名 2.函数功能
  7
  8 分类:
  9     1.单行函数
 10         1).字符函数
 11         2).数学函数
 12         3).日期函数
 13         4).其他函数
 14         5).流程控制函数
 15     如 concat length ifnull 等
 16     2.分组函数
 17     功能:做统计使用,又称统计函数
 18
 19 */
 20 #字符函数
 21 #length  获取字符长度
 22
 23 SELECT LENGTH('join');
 24
 25 #2.concat 拼接字符
 26
 27 SELECT CONCAT('lastname','first_name');
 28
 29 #3.upper lower #转换为大写字符  转换为小写字符
 30
 31 SELECT UPPER('join');
 32
 33 SELECT LOWER('JoIn');
 34
 35 #4.substr substring #截取字符串
 36
 37 SELECT SUBSTR('李莫愁爱上陆湛远',6) AS out_put; #sql 索引从1开始
 38
 39 SELECT SUBSTR('李莫愁爱上陆湛远',1,3) AS out_put;
 40
 41 #5.instr 返回子字符串第一次出现的索引,如果没又返回0
 42
 43 SELECT INSTR('abcdefg','cde') AS out_put;
 44
 45 #6.trim 去字符前后
 46
 47 SELECT LENGTH(TRIM('      去掉两端空格      ')) AS out_put;
 48
 49 SELECT LENGTH(TRIM('_' FROM '_____________去掉两端下划线_________')) AS out_put;
 50
 51 #7.lpad 左填充
 52
 53 SELECT LPAD('张三丰',10,'*') AS out_put;
 54
 55 #8.rpad 右填充
 56
 57 SELECT RPAD('张三丰',10,'_') AS out_put;
 58
 59 #9.replace 替换
 60
 61 SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏') AS out_put;
 62
 63 #二.数学函数
 64
 65 #1.round 四舍五入
 66
 67 SELECT ROUND(1.359);
 68
 69 SELECT ROUND(1.356,2);
 70
 71 #2.ceil 向上取整
 72
 73 SELECT CEIL(1.23);
 74
 75 #3.floor 向下取整
 76
 77 SELECT  FLOOR(-9.19);
 78
 79 #4.truncate 截断
 80
 81 SELECT TRUNCATE(1.6899999,1);
 82
 83 #5.mod 取余
 84
 85 SELECT MOD(10,3);
 86
 87 SELECT 10%3;
 88
 89 #三.日期函数
 90
 91 #1.now 返回当前系统日期+时间
 92
 93 SELECT NOW();
 94
 95 #2.curdate 返回当前系统日期  不包含时间
 96
 97 SELECT CURDATE();
 98
 99 #3.curtime 返回当前时间 不包含日期
100
101 SELECT CURTIME();
102
103 #4.可以返回指定的部分,年 月 日 小时 分钟 秒
104
105 SELECT YEAR(NOW()) 年;
106
107 SELECT YEAR('2020-1-2') 年;
108
109 SELECT MONTH(NOW()) 月;
110
111 SELECT DAY(NOW()) AS 日;
112
113 #5.str_to_date 将日期格式字符转换为日期
114
115 SELECT STR_TO_DATE('1998-3-3','%Y-%c-%d') AS 入职日期;
116
117 #6.date_formate 将日期转换成字符
118
119 SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS 日期;
120
121 #案例:查询有奖金员工入职日期(xx月/xx日 xx年)
122
123 SELECT last_name,DATE_FORMAT (hiredate,'%m月/%d日 %y年') 入职日期
124 FROM employees
125 WHERE commission_pct IS NOT NULL;
126
127 #四 其他函数
128
129 #1.当前版本
130
131 SELECT VERSION();
132 #2.当前数据库
133
134 SELECT DATABASE();
135 #3.当前用户
136
137 SELECT USER();
138
139 #五 流程控制函数
140
141 #1.if函数;if else 效果
142 SELECT IF(10 < 5, '', '') ;
143
144 SELECT last_name,commission_pct,IF(commisssion_pct IS NULL,'没奖金 ,呵呵','有奖金,嘻嘻') 备注
145
146 FROM
147     employees
148
149 #2.case函数
150
151 #使用一: switch case 的效果
152
153 /*
154 case 要判断的字段或者表达式
155 when 常量1 then 要显示值1或者语句1;
156 when 常量2 then 要显示值2或者语句2;
157 ...
158 else 要显示的数值n或者语句n;
159 end
160 */
161 /*
162 #案例:查询员工的工资,要求
163 部门号=30,显示工资为1.1倍
164 部门号=40,显示工资为1.2倍
165 部门号=50,显示工资为1.3倍
166 其他部门,显示工资为元工资
167 */
168 SELECT salary 原始工资,department_id,
169
170 CASE department_id
171 WHEN 30 THEN salary*1.1
172 WHEN 40 THEN salary*1.2
173 WHEN 50 THEN salary*1.3
174 ELSE salary
175 END AS 新工资
176 FROM employees;
177
178 #使用二
179 /*
180 case
181 when 条件1 then 要显示值1或者语句1;
182 when 条件2 then 要显示值2或者语句2;
183 ...
184 else 要显示的数值n或者语句n;
185 end
186 */
187 /*
188 #案例:查询员工工资情况
189 如果工资>20000,显示A级别
190 如果工资>15000,显示B级别
191 如果工资>10000,显示C级别
192 否则,显示D级别
193 */
194
195 SELECT salary,
196 CASE salary>20000 THEN 'A'
197 CASE salary>15000 THEN 'B'
198 CASE salary>10000 THEN 'C'
199 ELSE 'D'
200 END AS 工资级别
201 FROM employees;

DQL语言

01-06 23:24
查看更多