1. 程式人生 > >資料庫學習筆記和小練習(14)函式

資料庫學習筆記和小練習(14)函式

函式分為系統函式和自定義函式。

一、系統函式

1 文字處理函式

select lower(Sdept) as Sdept_lower
from student
order by Sdept;

常用舉例:

lower() 函式將文字轉化為小寫。

upper()  ->  將文字轉化為大寫

left()   ->   返回串左邊的字元

length()  ->  返回串的長度

locate()  -> 找出串的一個子串

ltrim()  ->  去掉串左邊的空格

rtrim() ->   去掉串右邊的空格

right() ->   返回串右邊的字元

substring() -> 返回子串的字元

set @cn = '你好';
set @en = 'hello';

select substring(@cn,1,2);
select substring(@en,1,5);
@cn 從角標1開始擷取兩個,顯示你好。

@en 從角標1開始擷取五個,顯示hello。

2 日期時間函式

常用舉例:

CurDate();  返回當前日期

curtime();  返回當前時間

Date();   返回日期時間的日期部分

Date_format()  返回一個格式化的日期或時間串

Day()  返回一個日期的天數部分

dayofweek()  返回日期是星期幾

now() 返回當前日期和時間

select id
from orders
where date(order_date) between '2015-01-01' and '2016-03-12';

order_date是datetime型別,year()可以取出它的年,month()可以取出它的月

3 數值處理函式

abs()  返回絕對值

mod()  返回除操作的餘數

rand()  返回一個隨機數

二、自定義函式

函式和儲存過程類似,都是永續性模組,函式的定義和儲存過程類似,不同之處在於函式必須指定返回的型別

建立函式:

create function 函式名([引數列表])returns 資料型別

begin

函式體

返回值(指定的資料型別)

end;

create function display1() returns int
return 100;

執行:select 函式名(引數);

select display1();
檢視函式:
show function status\G;

發現函式是屬於建立時所在資料庫的。

檢視函式建立:

show create function display1\G;

函式可以修改,但是隻能修改函式名,對於函式本身,只能先刪除,再新建。
drop function display1;
注意這裡是函式名,不加括號。

帶引數的函式:求1到n的和

delimiter //
create function sum1(n int)returns int
begin
set @i = 1;
set @res = 0;

while @i <= n
do
set @res = @res + @i;
set @i = @i + 1;
end//
delimiter ;

select sum1();