MySQL函式(一)

阿劍i發表於2020-10-18

一、數學函式
1.ASB(X)
描述:返回X的絕對值
應用:SELECT ABS(-1)

2.MOD(N,M)
描述:模運算。返回N除以M的餘數
應用:SELECT MOD(10,3)

3.ROUND(X),(X,D)
描述:保留小數點位數。X代表實際值,D代表小數點位數。預設使用四捨五入
如果D未指定,則預設為0
SELECT ROUND(11.1)
D可以為負數,如果未負數,則對X的最後一位進行四捨五入。
SELECT ROUND(14,-1)

4.TRUNCATE(X,D)
描述:與ROUND(X,D)用法相同。
與ROUND的區別:
如果不需要小數位,必須手動指定D為0。不提供TRUNCATE(X)的寫法
只提供四捨五入

二、流程控制函式
1.CASE WHEN THEN ELSE END
語法:
CASE 欄位 WHEN 欄位的值 THEN 結果 [WHEN 欄位的值 THEN 結果 …] [ELSE 結果] END 欄位名或者別名
CASE WHEN 條件語句 THEN 結果 [WHEN 條件語句 THEN 結果 …] [ELSE 結果] END 欄位名或者別名
描述:這個類似於java中的if語句,並且這個函式大致有三種方式,類似於if(),if() else,if() else if() else;
應用:
只有一個流程分支
SELECT NAME,age, CASE sex WHEN 0 THEN ‘女’ END sex FROM student
SELECT NAME, age, CASE WHEN sex = 0 THEN ‘女’ END sex FROM student

有兩個流程分支
SELECT NAME,age, CASE sex WHEN 0 THEN ‘女’ ELSE ‘男’ END sex FROMstudent
SELECT NAME, age, CASE WHEN sex = 0 THEN '女’ELSE ‘男’ END sex FROM student

兩個以上流程分支
SELECT NAME,age, CASE sex WHEN 0 THEN ‘女’ WHEN 1 THEN ‘男’ ELSE ‘未知’ END sex FROM student
SELECT NAME, age, CASE WHEN sex = 0 THEN ‘女’ WHEN sex = 1 THEN ‘男’ ELSE ‘未知’ END sex FROM student

2.IF()
語法:IF(條件語句,值1,值2)
描述:這個類似於java中的三元表示式,如果符合條件就返回值1,如果不符合就返回值2
應用:
SELECT IF(10>11,‘y’,‘n’)
SELECT IF(11>10,‘y’,‘n’)

3.IFNULL()
語法:IFNULL(值1,值2)
描述:如果值1不為null就返回值1,如果值1為null就返回值2。
應用:
SELECT IFNULL(2,0)
SELECT IFNULL(NULL,1);

4.NULLIF()
語法:NULLIF(值1,值2)
描述:它是對值1和值2進行比較,如果符合就返回null,如果不符合就返回值1
應用:
SELECT NULLIF(1,1)
SELECT NULLIF(1,2)

三.比較函式
1.BETWEEN AND
語法:值 BETWEEN 最小值 AND 最大值
描述:判斷值是否在範圍內,如果值大於或者等於最小值,並且小於或者等於最大值,那麼結果就會返回1,否則返回0; BETWEEN AND 與 WHERE配合使用可以篩選符合條件的資料
應用:
判斷值是否在範圍內
SELECT 2 BETWEEN 1 AND 3
SELECT 2 BETWEEN 3 AND 1

與WHERE配合使用
SELECT id, name,age FROM student WHERE id BETWEEN 1 AND 10

2.NOT BETWEEN AND
描述:與BETWEEN AND邏輯和結果取反即可

3.GREATEST()
語法:GREATEST(值1,值2,值3…)
描述:對兩個以上引數,返回最大值。
應用:
SELECT GREATEST(1,2,3,4,5);
select GREATEST(val_1,val_2,val_3,val_4) from test

4.LEAST()
語法:LEAST(值1,值2,值3…)
描述:對兩個以上引數,返回最小值
應用:
SELECT LEAST(1,2,3,4,5);
select LEAST(val_1,val_2,val_3,val_4) from test

5.IN()
語法:值 IN(值1,值2,值3…)
描述:判斷值是否包含在IN中所擁有的引數,如果有則返回1,如果沒有則返回0;IN與WHERE配合使用可以篩選出包含IN中引數的資料
應用:
SELECT 1 IN(1,2,3,4,5)
SELECT 6 IN(1,2,3,4,5,6)

與WHERE配合使用
SELECT id,name,age FROM student WHERE id IN(1,2)

6.NOT IN()
描述:與IN()邏輯和結果取反即可

7.IS NULL
描述: 判斷值是否為null;與WHERE配合查詢條件為null的資料
應用:
SELECT * FROM student WHERE name IS NULL

8.IS NOT NULL
描述:判斷值是否不為null;與WHERE配合查詢出條件不為null的資料
應用:
SELECT * FROM student WHERE name IS NOT NULL

四.字串函式
1.CHAR_LENGTH()
語法:CHAR_LENGTH(欄位)
描述:返回字串長度,單位為字元
應用:
CHAR_LENGTH(name)

2.LENGTH()
語法:LENGTH(欄位)
描述:返回字串的長度,單位位元組
SELECT LENGTH(‘text’);

3.CONCAT()
語法:CONCAT(值1,值2,值3…)
描述:拼接字串
應用:
SELECT CONCAT(‘h’,‘e’,‘l’,‘l’,‘o’)

4.CONCAT_WS()
語法:CONCAT_WS(分隔符,值1,值2,值3…)
描述:用分隔符拼接字串
應用:
SELECT CONCAT_WS(’,’,‘hello’,‘mysql’)

5.ELT()
語法:ELT(第幾個元素,值1,值2,值3…)
描述:返回指定的元素
應用:
SELECT ELT(1,‘a’,‘b’)

6.FORMAT()
語法:FORMAT(M,D)
描述:將數字X格式化為’#,###,###.##’,將其舍入為D小數位,然後將結果作為字串返回。M代表實際值,D代表指定小數點位數。
應用:
SELECT FORMAT(1234.123, 2)

7.INSERT()
語法:INSERT(原字串,起始位置,結束位置,新字串);
描述:指定原字串的起始位置和結束位置,用新字串代替
應用
SELECT INSERT(‘hello’,1,2,‘ab’)
SELECT INSERT(‘hello’,‘o’)

8.INSTR()
語法:INSTR(字串,所包含的字串)
描述:檢視包含的字串在字串中第一次出現的位置
應用:
SELECT INSTR(‘hello’,‘o’)

9.SUBSTRING()
語法:SUBSTRING(字串,擷取位置)
描述:擷取指定位置的字串
SELECT SUBSTRING(‘hello’,2)

10.LEFT()
語法:LEFT(字串,指定位置)
描述:從左邊開始,擷取指定位置的字串
SELECT LEFT(‘hello’,2)

11.RIGHT()
語法:RIGHT(字串,指定位置)
描述:從右邊開始,擷取指定位置的字串
SELECT RIGHT(‘hello’,2)

相關文章