1. 程式人生 > >MySQL中的函式

MySQL中的函式

在MySQL中函式分為兩類,系統函式(內建函式)和自定義函式

不管是內建函式還是使用者自定義函式,都是使用select 函式名(引數列表)

內建函式

字串函式

char_length():判斷字串的字元數

length():判斷字串的位元組數(與字符集)

concat():連線字串

instr():判斷字元在目標字串中是否存在,存在返回其位置,不存在返回0      //從1開始

lcase():全部小寫

left():從左側開始擷取字串,直到指定位置(位置如果超過長度,則擷取所有)

ltrim():消除左邊對應空格

mid():從中間指定位置開始擷取,如果不指定擷取,直接到最後                      //從1開始

時間函式

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

curdate():返回當前日期

curtime():返回當前時間

datediff():判斷兩個日期之間的天數差距

date_add(日期,interval 時間數字 type):進行時間的增加

               type:year/month/day/hour/minute/second....只要符合標準即可

unix_timestamp():獲取時間戳(從格林威治時間開始)

from_unixtime():將指定時間戳轉換成對應的日期格式

數學函式

abs():絕對值

ceiling():向上取整

floor():向下取整

pow():求指數,誰的多少次方

rand():獲取隨機數(0-1)

round():四捨五入函式

其他函式

md5():對資料進行md5加密(MySQL中的md5與其他任何地方的md5加密出來的內容是完全相同的)

version():獲取版本號

database():顯示當前所在的資料庫

UUID():生成一個唯一識別符號(自增長,不過自增長是單表唯一,UUID是整庫唯一:資料唯一同時空間唯一)

自定義函式

函式是實現某種功能的語句塊(由多條語句組成)

1、函式內部的每條指令都是一個獨立的個體,需要複合語句定義規範:需要語句結束符,分號;

2、函式是一個整體,而且函式是在呼叫的時候才會被執行,那麼當設計函式的時候,意味著整體不能被中斷

3、MySQL一旦見到語句結束符分號,就會自動開始執行

解決方案:在定義函式之前,嘗試修改臨時的語句結束符

基本語法:dalimiter

       修改臨時語句結束符:delimiter 新符號(可以使用系統非內建即可$$)

中間為正常SQL指令:使用分號結束(系統不執行分號)

使用新符號結束

修改回語句結束符:delimiter ;

建立函式

自定義函式包含幾個要素:function關鍵字,函式名,引數(形參和實參[可選]),確認函式返回值型別,函式體,返回值

語法:

修改語句結束符

create function 函式名(形參)  returns 返回值型別

begin

      //函式體

      return返回值資料;   //資料必須與結構中定義的返回值型別一致

end

語句結束符

修改語句結束符(還原)

  // 如果函式體本身只有一條指令(return),那麼可以省略begin和end

形參:在MySQL中需要為函式的形參指定資料型別

語法: 變數名 欄位型別

create function my_func3(int_1 int,int_2 int) returns int
return int_1 + int_2; 

檢視函式

1、可以通過檢視function狀態,檢視所有函式

show function status [like 'pattern'];

2、檢視函式的建立語句:Show create function 函式名 ;

呼叫函式

自定義函式的呼叫與內建函式的呼叫一樣

語法:select 函式名(引數列表)

刪除函式

語法:drop function 函式名;

注意事項:

1、自定義函式屬於使用者級別,只有當前客戶對應的資料庫中可以使用

2、可以在不同的資料庫在看到所有函式,但是不能呼叫

3、自定義函式:通常是為了將多行程式碼集合到一起解決一個重複性問題

4、函式因為必須規範返回值,那麼在函式內部不能使用select指令,除了變數賦值:select 欄位 into @變數;