一起來學MySQL—常用內置函數

單行函數

字符函數

函數名 作用
concat 拼接字符串。注意:NULL 和 任何字符串拼接,最後的結果都是 NULL
substr 截取字符串。索引從 1開始
upper 變大寫
lower 變小寫
replace 替換
length 獲取 字節長度
trim 默認是去除前後空格,也可以去除指定的字符:TRIM (‘H’ FROM ‘HelloWorld’),結果爲 elloWorld
ltrim 去除左邊空格
rtrim 去除右邊空格
lpad 左填充,LPAD(24000,10,’*’) 結果爲 *****24000
rpad 右填充,RPAD(24000,10,’*’) 結果爲 24000*****
instr 獲取子串第一次出現的索引

數學函數

函數名 作用
ceil 向上取整
floor 向下取整
round 四捨五入
truncate 截斷
mod 取餘
rand 獲取隨機數,返回 0-1 之間的小數

日期函數

函數名 作用
now 返回當前日期+時間
curdate 返回當前日期
curtime 返回當前時間
year 返回年
month 返回月
day 返回日
hour 小時
minute 分鐘
second
date_format 將日期轉換成字符,DATE_FORMAT(2018/6/6,%Y 年%m 月%d 日) 2018 年06 月06 日。注意:轉換成的字符串就是自己定義的格式
str_to_date 將字符轉換成日期,STR_TO_DATE(‘9-13-1999’,’%m-%d-%Y’) 1999-09-13。注意:DATE 的格式要和 STR 的格式一一對應才能轉換
datediff 返回兩個日期相差的天數
monthname 以英文形式返回月

在這裏插入圖片描述

分組函數

函數名 作用
max 最大值
min 最小值
sum 求和
avg 平均值
count 計算個數

特點:

  • 以上分組函數都忽略 null(count(*) 除外)
  • 都可以搭配 distinct 使用,實現去重的統計
    select sum(distinct 字段) from 表;

注意:

  • sum 和 avg 一般用於處理數值型,max、min、count 可以處理任何數據類型。
  • 對於 count() 函數:MyISAM 存儲引擎,count(*) 效率最高;InnoDB 存儲引擎,count(*) 和 count(1) 效率 > count(字段)

流程控制函數

  • if() 函數
    類似於三元表達式,if(條件表達式,表達式1,表達式2):如果條件表達式成立,返回表達式1,否則返回表達式2

  • case 語句
    case語句的使用有兩種情況,一種是等值判斷,一種是條件判斷。

case情況1:等值判斷

case 變量 或 表達式 或 字段
when 常量1 then1
when 常量2 then2
...
else 值n
end

示例:查詢員工的工資,要求:部門號=30,顯示的工資爲1.1倍,部門號=40,顯示的工資爲1.2倍,部門號=50,顯示的工資爲1.3倍,其他部門,顯示的工資爲原工資

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情況2:條件判斷

case 
when 條件1 then1
when 條件2 then2
...
else 值n
end

示例:查詢員工的工資的情況:如果工資>20000,顯示A級別;如果工資>15000,顯示B級別
;如果工資>10000,顯示C級別;否則,顯示D級別

SELECT salary,
CASE 
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 工資級別
FROM employees;

其他函數

函數名 作用
version 當前數據庫服務器的版本
database 當前打開的數據庫
user 當前用戶
password(‘字符’) 返回該字符的密碼形式
md5(‘字符’) 返回該字符的 md5 加密形式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章