單行函數
字符函數
函數名 | 作用 |
---|---|
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 then 值1
when 常量2 then 值2
...
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 then 值1
when 條件2 then 值2
...
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 加密形式 |