一、字符函数
LOWER() 字符小写
UPPER() 字符大写
TRIM() 去除指定字符
使用trim函数将字符串‘hello’、‘ Hello ’、‘bllb’、‘hello ’分别处理得到下列字符串ello、Hello、ll、hello。
SELECT TRIM('h' FROM 'hello') FROM DUAL;
SELECT TRIM(' Hello ') FROM DUAL;
SELECT TRIM(BOTH 'b' FROM 'bllb') FROM DUAL;
SELECT TRIM(BOTH ' ' FROM ' hello ') FROM DUAL
INSTR() select INSTR(name,'t'),name from aa; 显示字符 name 中 t 字符 第一次出现的位置(mysql 没有此方法,Oracle中可以用)
REPALCE() 替换 select REPLACE(name,'t','b') from aa; 将字符中的t 用 b 替换
SUBSTR() 截取
CONCAT() 连接字符串
LENGTH() 获得字符串长度
二、数字函数
1.ceil () 向上取整
例: SELECT CEIL(4.3) = 5
2.floor () 向下取整
例 :SELECT FLOOR(4.3) = 4
3.round() 四舍五入
例:SELECT round( 1.2, 0 ) = 1
SELECT round(1.5 , 0 ) = 2
SELECT round( 1.5 ) = 2
三、类型转换
date_format(date,'%Y-%m-%d')
-------------->oracle中的to_char();
str_to_date(date,'%Y-%m-%d')
-------------->oracle中的to_date();
日期函数
SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02") ; -- 截取日期
计算2000年1月1日到现在有多少月,多少周(四舍五入)。
select timestampdiff(MONTH,'20000101', now()) FROM DUAL;
selectROUND(DATEDIFF(now(),'2000-01-01')/7) FROM DUAL;
四、通用
select CONCAT('\_',name),name from aa ; -- 转移字符 ecaspe()
select IFNULL(name1,0) from aa ;-- 如果name1不是NULL,IFNULL()返回name1,否则它返回0。
. 查询员工的last_name及其经理(manager_id),要求对于没有经理的显示“NoManager”字符串。
SELECT last_name,IFNULL(manager_id,'No Mananger')from employees2;
select IF(name1,'-','--') fromaa ; -- 如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。
替换命令
语法 CASE expr
WHEN comparison_expr1 THEN return_expr1
WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr
END
单个值的替换
SELECT
CASE name
WHEN 'a' THEN 'one'
WHEN '1a' THEN'two'
ELSE 'more' END shuilv,name
from aa; -- 状态
有表达式的替换
SELECT
CASE
WHEN sale<1000 THEN '0'
WHEN 1000<=sale and sale <2000THEN '10'
WHEN 2000<=sale and sale<3000 THEN '15'
ELSE '--' END shuilv,sale,name
from aa; --
FROM DUAL; 注:dual 是临时虚拟表,只用于查询函数
在employees表中查询出员工的工资,并计算应交税款:如果工资小于1000,税率为0,如果工资大于等于1000并小于2000,税率为10%,如果工资大于等于2000并小于3000,税率为15%,如果工资大于等于3000,税率为20%。
SELECT last_name,salary,
(CASE FLOOR (salary/1000)
WHEN 0 THEN salary*0
WHEN 1 THEN salary*0.1
WHEN 2 THEN salary*0.15
ELSE salary*0.2
END) tax
FROM employees2;