sql 常見函數

常見函數

分類:
1、單行函數: 如:concat、length、ifnull等
2、分組函數 功能: 用作統計作用 分類: sum 求和、avg 平均數、 max 最大值、min 最小值、count 計算個數

一、單行函數

1、 字符函數

# 1、length 獲取字節數
SELECT LENGTH('zhangsan');
# 2、concat 拼接字符串
SELECT CONCAT(last_name, first_name) FROM empolyees;
# 3、upper、lower
SELECT UPPER('zhangsan');
SELECT LOWER('SZHANGAS');
SELECT CONCAT(UPPER(first_name), LOWER(last_name)) FROM empolyees;
# 4、substr、substring 注意: 索引是從1開始
SELECT SUBSTR('李莫愁與陸展元', 5);
SELECT SUBSTR('李莫愁與陸展元', 4, 3) test;
SELECT SUBSTRING('李莫愁與陸展元', 4, 3) test;
# 5、instr 返回當前字符串出現的索引
SELECT INSTR('李莫愁與陸展元', '陸展元') test;
# 6、trim 去除前後字符
SELECT LENGTH(TRIM('  張三  '));
SELECT TRIM('a' FROM 'aaaaaaaaaaa張aaaaaaaaaaaaa三aaaaaaaaaaa') AS aut;
# 7、lpad 用指定字符左填充
SELECT LPAD('卡戴珊', 10, '*') AS ka;
# 8、rpad 用指定字符右填充
SELECT RPAD('卡戴珊', 10, '*') AS ka;

# 9、replace 
SELECT REPLACE('我是張三丰', '張三丰', '校長') AS test;

2、 數學函數

# round 四捨五入 (默認整數,第二個是保留小數點)
SELECT ROUND(1.566, 2);
# ceil 向上取整
SELECT CEIL(2.55);
# floor 向下取整
SELECT FLOOR(2.55);
# truncate 截斷 
SELECT TRUNCATE(1.55, 1);
# mod 取餘
SELECT MOD(25, 3);

3、日期函數

# now 返回現在的時間
SELECT NOW();
# curdate 返回當前系統日期
SELECT CURDATE();
# curtime 返回當前的時間
SELECT CURTIME();
# 可以獲取指定的部分
SELECT YEAR(NOW());
SELECT YEAR('2015/5/6');
SELECT MONTH(NOW());
SELECT MONTHNAME(NOW());
SELECT DAY(NOW());
SELECT DAYNAME(NOW());
SELECT HOUR(NOW());
SELECT MINUTE(NOW());
SELECT SECOND(NOW());
# str_to_date 將字符通過指定的格式轉成日期
SELECT STR_TO_DATE('4-5-2015', '%m-%d-%Y');

# 查詢日期爲 --- 員工信息
SELECT * FROM empolyees WHERE `hiredate` = '2018-02-01';
SELECT * FROM empolyees WHERE `hiredate` = STR_TO_DATE('2-1-2018', '%m-%d-%Y');
# date_format: 將日期轉換成字符
SELECT DATE_FORMAT('2018-05-05', '%Y年%m月%d日');
# DATEDIFF() 兩個日期相減
SELECT DATEDIFF('2015-05-10', '2015-05-04');
# TIMEDIFF 兩個時間相減
SELECT TIMEDIFF('2015-05-10 15:30:20', '2015-05-10 11:30:20');
# monthname: 返回英文月
SELECT MONTHNAME('2015-05-10');
#dayname: 返回英文日
SELECT DAYNAME('2015-05-15');

4、其他函數

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

5、流程控制函數

# 1、if 函數
SELECT IF(10>5, '大', '小');
SELECT
  last_name,
  commission_pat,
  IF(
    commission_pat IS NULL,
    '沒獎金',
    '有獎金'
  )
FROM
  empolyees;

# 2、case 函數 使用一
/*
 switch(a) {
	case 1:... break;
	default: ... break;	
 }
 
 mysql 中:
 
 case 要判斷的字段或者表達式
 when 常量1 then 要顯示的值1 或語句1
 when 常量2 then 要顯示的值2 或語句2
 ...
 else 要顯示 的值n或者語句n;
 end

*/

/*
# 案例 查詢員工的工資 : 要求
部門號=2, 顯示的工資爲1.1倍
部門號=3, 顯示的工資爲1.3倍
部門號=5, 顯示的工資爲1.5倍
其他部門,不變
*/

SELECT
  salay 原始工資,
  departmanet_id,
  CASE
    departmanet_id
    WHEN 2
    THEN salay * 1.1
    WHEN 3
    THEN salay * 1.3
    WHEN 5
    THEN salay * 1.5
    ELSE salay
  END AS 新工資
FROM
  empolyees;
 
# 3、case 函數的使用二。類似於多重if
 
/*
case
when 條件一 then ...
when 條件二 then ...
else ...
end


*/

# 案例: 查詢員工的工資情況
/*
如果工資> 400000, 顯示A 級別
如果工資> 300000, 顯示B 級別
如果工資> 200000, 顯示C 級別
否則顯示D 級別
*/

SELECT
  salay,
  CASE
    WHEN salay > 400000
    THEN 'A'
    WHEN salay > 300000
    THEN 'B'
    WHEN salay > 200000
    THEN 'C'
    ELSE 'D'
  END
  AS 級別
FROM
  empolyees;

二、分組函數

/**

功能: 用作統計作用
分類: sum 求和、avg 平均數、 max 最大值、min 最小值、count 計算個數
*/

SELECT
  SUM(salay)
FROM
  empolyees;

SELECT ROUND(AVG(salay), 2) FROM empolyees;

感興趣可以進入我的小屋瞅瞅 ------ 記得給我點贊哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章