mysql建立自定義函式與儲存過程

2021-09-06 16:42:49 字數 2739 閱讀 5081

mysql建立自定義函式與儲存過程

一 建立自定義函式

在使用mysql的過程中,mysql自帶的函式可能不能完成我們的業務需求,這時就需要自定義函式,例如筆者在開發過程中遇到下面這個問題

mysql表結構如下

其中pic欄位為名稱,

hashcode是的感知雜湊編碼(16進製制編碼字串,長度固定16位),

使用者輸入乙個hashcode,怎麼從資料庫中找出滿足字串對應位置的字元不同的個數小於5的記錄呢?

就像「11001」和「11101」對應位置不同字元不同的個數為1,

比如 使用者輸入"7f7f004f7f7f00af",那麼第三條和第四條記錄是滿足的,怎麼實現呢?

如果單純的依靠mysql自帶的函式很難完成,這時就需要建立自定義函式解決。

這個問題的解決在此非常感謝csdn的acmain_chm,acmain_chm以及oschina的@梁小剛,還有@**丁奇

建立自定義函式的過程如下:

1.進入mysql命令列

mysql>

2.用delimiter命令來把語句定界符從 ;變為//。這樣就允許在程式體用;定界符傳遞到伺服器,而不是被mysql自己來解釋。

mysql> delimiter //

3.建立自定義函式

create

function hashdiff( s1 varchar(16), s2 varchar(16

))

returns

intbegin

declare diff, x int;

set diff =0;

set x =0;

while (x <

16) do

set x = x+1;

ifsubstring(s1, x,1)<>

substring(s2, x,1) then

set diff=diff+1;

endif;

endwhile;

return

diff;

end//

二 建立儲存過程

1.進入mysql命令列

mysql>

2.用delimiter命令來把語句定界符從 ;變為//。這樣就允許在程式體用;定界符傳遞到伺服器,而不是被mysql自己來解釋。

mysql> delimiter //

3.建立儲存過程

delimiter $$

create

procedure `getstocks`(int_stockcode int

)

begin

select

count(*) into from

test;

end$$

delimiter ;

call getstocks(

@a);

mysql 自定義函式 建立儲存過程

一 自定義函式為了防止分號產生的中途輸出,自己定義乙個 分隔符,這裡仿照mysql官方的例子 使用兩個美元符號 作為分割符號,下面這段 就是建立乙個自定義mysql函式的原型了,可以在這個基礎上修改,這樣,建立函式就不會產生很多錯誤了.set global log bin trust functio...

MySQL 建立自定義函式

語法 create function function name 引數列表 returns返回值型別 函式體 函式名,應合法的識別符號,不應與系統關鍵字衝突。乙個函式應該屬於某個資料庫,可以使用db name.funciton name的形式執行當前函式所屬資料庫,否則為當前資料庫。引數部分,由引數...

MySql建立自定義函式(Function)

delimiter drop function if exists genperson create function genperson name varchar 20 returns varchar 50 begin declare str varchar 50 default set tabl...