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 @變數;