1. 程式人生 > 其它 >一、常見函式之單行函式

一、常見函式之單行函式

介紹

概念:

  類似於java(python)的方法,將一組邏輯語句封裝在方法體中,對外暴露方法名

好處:

  1. 隱藏了實細節;
  2. 提高程式碼的重用性

語法:

select  函式名(實參列表) 【from 表】;

呼叫關注:

  1. 叫什麼(函式名);
  2. 幹什麼(函式功能)

分類:

1.單行函式:如concat、length、ifnull等。 2.分組函式:做統計使用,又被稱為統計函式、聚合函式、組函式

字元函式

length:查詢字元位元組串長度,utf-8中漢字為3個位元組串,gbk中漢字為2個位元組串

SELECT LENGTH('join');
SELECT LENGTH('
張三丰taijiquan');

concat:拼接字串

SELECT CONCAT(last_name,' ',first_name) FROM employees;

substr【substring】:擷取指定索引,下標從1開始

-- substr(string, start, length)
-- 擷取從指定索引處後面所有的字元
SELECT SUBSTR('李莫愁愛上了陸展元',7) out_put;

-- 擷取從指定索引處指定字元長度的字元
SELECT SUBSTR('李莫愁愛上了陸展元',1,3) out_put;

-- 案例:姓名中首字母大寫,其他字元小寫然後後用_拼接;
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) AS out_put FROM employees;

instr:返回子串第一次出現的索引,如果找不到返回0

SELECT INSTR('下次是哪次','哪次') AS out_put;
SELECT INSTR('下次是哪次','shi哪次') AS out_put;

trim:函式可以移除字串的首尾資訊。最常見的用法為移除字元首尾空格。

SELECT TRIM('          改天是哪天          ') AS out_put;

-- 移除指定的首尾字元,備註:前面的‘aa’是一個字元,如果後面是'aaaaa改天是哪天aaaaa',擷取後'a改天是哪天a' SELECT TRIM('a' FROM 'aaaa改天是哪天aaaa') AS out_put;

upper:轉換成大寫

SELECT UPPER(last_name) FROM employees;

lower:轉換成小寫

SELECT LOWER(last_name) FROM employees;

-- 案例:姓大寫,名小寫
SELECT CONCAT(UPPER(last_name),LOWER(first_name)) as 姓名 FROM employees;

lpad:用指定的字串實現左填充指定長度,如字元沒有指定長度,則會進行擷取顯示

SELECT LPAD('以後是多後',10,'*');
SELECT LPAD('以後是多後',2,'*');

rpad:用指定的字串實現右填充指定長度,如字元沒有指定長度,則會進行擷取顯示

SELECT RPAD('以後是多後',10,'*');
SELECT RPAD('以後是多後',2,'*');

replace:替換,有多個則替換多個

SELECT REPLACE('time will tell','time','替換') AS out_put;

distinct:去重函式

SELECT DISTINCT commission_pct from employees

ifnull:如果引數為null,則輸出指定值,sql為isnull

SELECT IFNULL(commission_pct,1) FROM employees

數學函式

round:四捨五入,預設保留一位小數

SELECT ROUND(1.55);
-- 保留兩位小數
SELECT ROUND(1.567,2);

ceil:向上取整,返回>=該引數的最小整數

SELECT CEIL(1.02);
SELECT CEIL(1.0);
SELECT CEIL(-1.02);

floor:向下取整,返回<=改引數的最大整數

SELECT FLOOR(1.02);
SELECT FLOOR(1.0);
SELECT FLOOR(-1.02);

truncate:截斷

SELECT TRUNCATE(10.999999,1);

mod:

/*
mod(a,b):a-a/b*b
mod(-10,-3): -10 - (-10)/(-3)*(-3) = -1
*/
SELECT MOD(10,-3);
SELECT 10%-3;

rand:獲取隨機數,返回0~1之間的小數

select truncate(rand(),1)