常見函數
-
概念: 類似與c++的函數,將一組邏輯語句封裝在函數體中,對外暴露函數名
-
好處:
- 隱藏了實現細節
- 提高代碼的重用性
-
調用:
select 函數名(實參列表) 【from 表】;
-
特點:
- 叫啥
- 幹啥
-
分類:
-
單行函數 如 concat
字符函數
-
分組函數
-
1 單行函數
1.1 字符函數
# length
select length('john');
/* 4*/
--
# concat
--連接
select concat(last_name, ' '. first_name) 姓名
from emp;
-- upper、lower 小寫,大寫
-- substr, substring
-- 索引從1開始
select substr('你好不是我', 3) out_put;
-- 從第三個字符開始截取
select substr('你好不是我', 1, 3) out_put;
-- 從第1個字符開始截取3個長度
-- 姓名中首字符大寫、其他小寫
select concat(upper(substr('last_name', 1, 1)), '_', lower(substr('last_name', 2)));
# instr 返回第一次出現的起始索引,如果沒有0
SELECT instr('你是豬嗎,', '你是') as out_put;
# TRIM 去掉前後沒用的值
SELECT length(TRIM(' 是你 ')) as out_put;
SELECT trim ('a' from 'aaaaaaaaaaaaaaa你好aaaaaaaaaa大蘇打aaaaaaaaaaaaaa') as put;
# 7 lpad 用指定的字符實現左填充使總長度爲你指定的
SELECT lpad('你是傻子', '10', 'ab');
# 8 rpad 右填充
# REPLACE 替換
# 你是替換成我是
SELECT replace('你是你是你是你是你是很厲害的', '你是', '我是') as put;
1.2 數字函數
# round 四捨五入
SELECT ROUND(-1.55); # -2
SELECT ROUND(1.55); # 2
# ceil 向上取整 返回大於等於他的
SELECT ceil(-1.02); -1
# floor 向下取整
SELECT FLOOR(-9.99);
# truncate 截斷
SELECT TRUNCATE(12.69999, 1); #取幾位小數
#mod 取餘
SELECT mod(10, -3);
SELECT 10%3;
1.3日期函數
# now 返回日期和時間
SELECT now();
# curdate 返回當前日期
SELECT curdate();
#curtime 返回當前時間
SELECT curtime();
# 可以指定獲取部分,年月日小時分鐘秒
SELECT year(Now()) 年;
SELECT year('1998-1-1') 年;
SELECT MONTH(NOW()) 月;
SELECT MONTHNAME(NOW()) 月;
# 獲取 字符轉日期
SELECT str_to_date('9-12-1999', '%m-%d-%Y'); 月日年
SELECT * FROM orders;
SELECT * from orders
where order_date = str_to_date('10-3-2005', '%c-%d-%Y');
# 日期轉字符
SELECT date_format(now(), '%y-%m-%d') as out_put;
# 其他
SELECT version();
SELECT DATABASE();
1.4 流程函數
# if
SELECT if(10 < 5, '大', '小');
# case 函數的使用一: switch case
case 要判斷的字段或表達式
when 常量1 then 要顯示的值1或語句1;
when 常量2 then 要顯示的值2或語句2;
else 要顯示的值
end
SELECT salary 原始工資, department,
CASE department
when 30 then salary*1.1
when 40 then salary*1.2
else salary
end as 新工資
from emp;