1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
# =====================================字符函数========================================
# LENGTH:字符串长度【一个英文占一个字节,常见中文占三个字节,复杂的中文字节数可能是三个以上】 SELECT LENGTH('aaa'); SELECT LENGTH('张三丰');
# 查看字符集 SHOW VARIABLES LIKE '%char%';
# CONCAT:字符串拼接 SELECT CONCAT(last_name,'-',first_name) FROM employees;
# UPPER(将小写转换为大写)、LOWER(将大写转换为小写) SELECT UPPER('aaa'); SELECT LOWER('AAAb');
# 将姓变大写,将名变小写 SELECT CONCAT(UPPER(last_name),'-',LOWER(first_name)) 姓名 FROM employees;
# SUBSTR、SUBSTRING:字符串截取 SELECT SUBSTR('李莫愁',3); SELECT SUBSTR('李莫愁',1,2) ;
# 姓名中首字符大写,其他字符小写然后用-拼接,显示出来 SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'-',LOWER(SUBSTR(last_name,2))) FROM employees;
# INSTR:获取子串第一次出现的索引,如果找不到返回0 SELECT INSERT('杨不悔aaa',);
# TRIM:去除字符串前后的空格 SELECT LENGTH(TRIM(' aaaa '));
# TRIM:去除字符串前后指定的字符 SELECT TRIM('a' FROM 'abaaaaaaaaba');
# LPAD:用指定的字符实现左填充指定长度 SELECT LPAD('aaa',10,'*');
# RPAD:用指定的字符实现右填充指定长度 SELECT RPAD('aaa',10,'*');
# REPLACE:将指定字符替换为新的字符 SELECT REPLACE('aaaaaddddddcccccc','d','b');
# ====================================数学函数=========================================================
# ROUND:四舍五入 SELECT ROUND(5.55555,2);
# CEIL:向上取整,返回 >= 该参数的最小整数 SELECT CEIL(1.02);
# 向下取整,返回 <= 该参数的最大整数 SELECT FLOOR(1.02);
# TRUNCATE:截断 SELECT TRUNCATE(1.9999,1); # 输出;1.9
# MOD:取余 SELECT MOD(10,3)
# ====================================日期函数=========================================================
# NOW:返回当前系统日期+时间 SELECT NOW();
# CURDATE:返回当前系统日期,不包含时间 SELECT CURDATE();
# CURTIME:返回当前时间,不包含日期 SELECT CURTIME();
# 获取指定的部分,年、月、日、小时、分钟、秒 SELECT YEAR(NOW()); SELECT YEAR('1999-1-1'); SELECT MONTH(NOW()); SELECT MONTH('1999-1-1');
# STR_TO_DATE:将日期字符串转换为日期 SELECT STR_TO_DATE('1999-10-8','%y-%c-%d');
# DATE_FORMAT:将日期转换为字符串 SELECT DATE_FORMAT(CURDATE(),'%y年%m月%d日');
# 查询有奖金的员工名和入职日期(xx月/xx日 xx年) SELECT last_name , DATE_FORMAT(hiredate,'%m月/%d日 %y年') 入职日期 FROM employees;
# ====================================其他函数=========================================================
SELECT VERSION(); # 查询数据库版本 SELECT DATABASE(); # 查询数据库 SELECT USER(); # 查询用户
# ====================================流程控制函数=========================================================
SELECT IF(10>4,1,2);
SELECT last_name,commission_pct ,IF(commission_pct IS NULL,'没奖金','有奖金') 备注 FROM employees;
# CASE函数的使用一:类似于Java中的switch、case的效果
# 查询员工的工资,要求 # 部门=30,显示的工资为1.1倍 # 部门=40号,显示工资为1.2倍 # 部门=50,显示工资为1.2倍 # 其他部门,显示的工资为原工资 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;
# CASE函数的使用二:类似于Java中的多重if
# 查询员工的工资情况 SELECT salary, CASE WHEN salary > 10000 THEN 'A' WHEN salary > 15000 THEN 'B' WHEN salary > 20000 THEN 'C' ELSE 'D' END AS 工资级别 FROM employees;
|