1. 程式人生 > >MySQL(6) 之 單行函式

MySQL(6) 之 單行函式

單行函式

概念: 類似java中的方法,將一組邏輯語句封裝到方法體中,對外暴露方法名

好處:1.隱藏實現細節;2、提高diam的重要性

分類:1.單行函式  concat、length、ifnull

           2.分組函式  統計中使用,又稱統計函式,聚合函式,組函式;

1.單行函式


# 1.字元函式


# 1.1 length:一個字母是一個位元組,
# 如果一個漢字三個位元組(utf8)
# 如果是gbk的話漢字佔兩個位元組
SELECT LENGTH('張無敵');

# 1.2 concat 字元拼接函式


SELECT CONCAT(last_name,'-',first_name) FROM employees;

# 1.3 upper,lower 大小寫轉換;
SELECT UPPER('hello');
SELECT LOWER('HELLO');

# 1.4 substr
# 在mysql中索引是從1開始數的;
# 7是從7位置擷取;
SELECT SUBSTR('李莫愁愛上了陸展元',7) outname;
# 1是開始位置,3是擷取長度;
SELECT SUBSTR('李莫愁愛上了陸展元',1,3) outname;

# 1.5 instr (返回字串在長串中第一次起始索引,如果沒有返回0)


SELECT INSTR('楊不悔愛上了殷六俠','殷六俠') AS output;

# 1.6 trim(去除頭和尾)
SELECT TRIM('   asdfasdf             ') AS output;
# 去掉字串頭尾的'-'
SELECT TRIM('-'FROM'--------HHHH-------') AS output;

# 1.7 lpad rpad(指定長度 指定字元 左右填充 )
# 如果長度小於原本字串的長度,會截斷字串;
SELECT LPAD('殷素素',10,'*') AS output;

# 1.8 replace 替換
SELECT REPLACE ('張 wudi','張','李');

 

#數學函式


# 1.round 四捨五入
SELECT ROUND (1.23);
# 小數點後保留兩位;
SELECT ROUND (1.234,2);

# 2. ceil  向上取整;2
SELECT CEIL(1.34);

# 3. floor 向下取整 -4
SELECT FLOOR(-3.45);

# 4.truncate 截斷 1.2
SELECT TRUNCATE (1.299,1);

# 5.mode 取餘數
SELECT MOD(10,3);
SELECT 10%3;

 

# 日期函式


# 1. 返回當前系統日期+時間;
SELECT NOW();

# 2. 返回當前系統日期;
SELECT CURDATE();

# 3. 返回當前系統時間;
SELECT CURTIME();
# 4.自定義日期 年,月,日,時,分 ,秒
SELECT YEAR(NOW()) 年 ,MONTH(NOW()) 月;

# 5.str_to_date() 將字串轉成日期型別
SELECT STR_TO_DATE('1998-8-4','%Y-%c-%d') AS riqi;

# 6. date_format 將日期轉換成字串
SELECT DATE_FORMAT(NOW(),"%y年/%m月/%d日");
SELECT last_name,DATE_FORMAT(hiredate,"%y年/%m月/%d日") FROM employees;

 

# 其他函式

SELECT VERSION();
SELECT DATABASE();
SELECT USER();

 

# 流程控制函式


# 1. if 函式,  if else
SELECT  IF(10<5,'da','xiao');
SELECT last_name,IF(commission_pct IS NULL,'hehe','haha') 備註 FROM employees;

# 2.case 函式的使用
SELECT 
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;

# 3.case 的使用二
/*
case (case 後面不加東西)
when 條件1 then ...
when 條件2 then ...
else ...
end 
*/
SELECT
CASE
WHEN salary>10000 THEN 'c'
WHEN salary>15000 THEN 'b'
WHEN salary>20000 THEN 'a'
ELSE 'd'
END AS 工資級別
FROM employees;