sql語句常見函式
常見函式
-
語法:
select 函式名(實參列表) 【from 表】; -
分類:
- 單行函式
字元函式
concat:連線
substr:擷取子串
upper:大寫
lower:小寫
replace:替換
length:獲取位元組長度
trim:去除前後空格
lpad:左填充
rpad:右填充
instr:獲取子串第一次出現的索引
數學函式
ceil:向上取整
round:向下取整
mod:取模
floor:向下取整
truncate:截斷
rand:獲取隨機數,返回0-1之間的小數
日期函式
now:返回當前日期+時間
year:返回年
month:返回月
day:返回日
data_format:將日期轉換成字元
curdate:返回當前日期
curtime:返回當前時間
str_to_data:將字元轉換成日期
datadiff:返回兩個日期相差得天數
monthname:以英文形式返回月
其他函式
version:當前資料庫伺服器版本
database:當前開啟的資料庫
user:當前使用者
password(‘字元’):返回該字元得的加密形式
md5(‘字元’):返回該字元得的加密形式
流程控制函式
if(條件表示式, 表示式1, 表示式2);
case 變數或者表示式或者欄位
when 常量1 then 值1
when 常量2 then 值2
…
else 值n
end;case
when 條件1 then 值1
when 條件2 then 值2
…
else 值n
end;
- 分組函式
max, min, sum, avg,count
- 功能:做統計使用,又稱為統計函式
- 語法:select max(【distinct】欄位) from 表名
- 支援: sum和avg一般用於處理數值型,max、min、count可以處理任何資料型別。以上分組函式都可以支援null
單行函式
1、字元函式
length獲取引數值的位元組個數
SELECT LENGTH("holy"); #4
SELECT LENGTH("長度"); #3*2
concat 拼接字串
SELECT CONCAT(uname, '_', upassword) FROM userinfo;
upper大寫, lower小寫
SELECT UPPER("hLow"), LOWER("Hlow");
substr, substring擷取字元.
-
擷取從指定索引處後面所有字元,包括指定的哪個字元。注意,索引從1開始
SELECT SUBSTR('張三丰與郭襄', -2); #郭襄 SELECT SUBSTR('張三丰與郭襄', 5); #郭襄
-
擷取從指定索引處指定字元長度的字元
SELECT SUBSTR('張三丰與郭襄', 1, 3);
instr:返回子串第一次出現的索引,如果找不到就返回0
SELECT INSTR('張三丰與郭襄', '郭襄'); #5,郭襄對應張三丰與郭襄中的索引是5
trim:
SELECT TRIM(" abc "); #去除字串首尾的空格
SELECT TRIM('a' FROM "aaaaaaa aaaaa掌聲aaaaaaaa "); # aaaaa掌聲aaaaaaaa :去除字串首尾的的a,不去除空格
SELECT TRIM('aa' FROM "aaaaaaaaaaa掌聲aaaaaaaa "); #a掌聲aaaaaaaa
lpad:用指定的字元填充實現左指定的長度,如果源字串的長度大於指定的長度就截斷
SELECT LPAD('智慧', 10, '*');
SELECT LPAD('智慧', 1, '*');
rpad:用指定的字元填充實現右指定的長度,如果源字串的長度大於指定的長度就截斷
SELECT RPAD('智慧', 10, '*');
replace替換
SELECT REPLACE('你好啊,世界', '世界', '宇宙');
2、數學函式
round 四捨五入
SELECT ROUND(1.49); #1
SELECT ROUND(1.50); #2
SELECT ROUND(-1.5); #-2
SELECT ROUND(-1.6); #-2
SELECT ROUND(1.6); #2
SELECT ROUND(5.555, 2); # 5.56
ceil向上取整,返回>=該引數的最小整數
SELECT CEIL(-1.00); #-1
SELECT CEIL(-1.10); #-1
SELECT CEIL(1.00); #1
SELECT CEIL(1.10); #2
floor向下取整,返回<=該引數的最大整數
SELECT FLOOR(-1.00); #-1
SELECT FLOOR(-1.10); #-2
SELECT FLOOR(1.00); #1
SELECT FLOOR(1.10); #1
truncate 擷取小數位數
SELECT TRUNCATE(1.6999, 1); #1.6
mod取餘
SELECT MOD(10, 3); #1
SELECT MOD(10, -3); #1
SELECT MOD(-10, 3); #-1
其他函式
SELECT VERSION(); #mysql版本
SELECT DATABASE(); #當前使用的資料庫名
SELECT USER(); #當前使用者
流程控制函式
if函式:if-else
SELECT IF(1, "成立", "不成立");
case
-
用法1:類似switch
-
用法2:多重if
/*
case 要判斷的欄位或者表示式
when 常量1 then 顯示1
when 常量2 then 顯示2
…
else 顯示n
end
*/SELECT uname, CASE uname WHEN 1 THEN '顯示1' WHEN 6 THEN '顯示6' ELSE '顯示n' END AS 姓名 FROM userinfo;