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语言