MySql自定義函式

2021-10-25 21:20:15 字數 2868 閱讀 4601

在長串中查詢小串出現的次數

例如:在 「我愛我家」 查詢"我"出現了幾次

自定義函式

delimiter $$

drop function if exists `fn_findcharcount` $$

create function fn_findcharcount ( in_str text, in_find_str text ) returns int ( 11 )

begin

declare

tcount int default 0;

declare

new_str text;

declare

scount int;

set new_str = in_str;

select

instr( new_str, in_find_str ) into scount;

while

scount > 0 do

set tcount = tcount + 1;

select

substring(

new_str

from

( scount + 1 ) for char_length( new_str )) into new_str;

select

instr( new_str, in_find_str ) into scount;

end while;

return ( tcount );

end $$

delimiter;

說明:

(1)delimiter $$  定義結束符。mysql預設的結束符是分號,但是函式體中可能用到分號。為了避免衝突,需要另外定義結束符。

(2)drop function if exists `fn_findcharcount` $$ 如果函式fn_findcharcount已經存在了,就刪除掉。

(3) create function 建立函式fn_findcharcount ,函式的引數是in_str 和 in_find_str 返回值是 int ( 11 )。

(4)函式體放在begin 與 end之間。

(5)declare 宣告變數

(6)return 返回結果。

mysql自帶的 ifnull(引數1,引數2)

如果 引數1 為null,則返回引數2。

我們在使用時發現,如果引數1為空字串,是不會返回引數2的。

如果我們有業務需求,把null和空字串都視為null的話可以使用下面的函式

delimiter $$

drop function if exists `func_ifnull` $$

create function func_ifnull ( param text,param2 text) returns text charset utf8

begin

return if(length(trim(param))>0,param,param2);

end $$

delimiter;

select func_ifnull('    ','sql')  返回 sql

select func_ifnull(' ','sql') 返回 sql

select func_ifnull(null,'sql') 返回 sql

select func_ifnull('a','sql') 返回a

mysql 自帶函式 isnull(expr)

如果引數為null 返回 1,否則返回 0

如果有業務需求,引數為null或空字串都視為null的話,可以使用下面的函式

func_is_empty為空返回1,否則返回0

delimiter $$

drop function if exists `func_is_empty` $$

create function func_is_empty (pi_value text) returns tinyint(4)

begin

return isnull(pi_value) or pi_value = '';

end $$

delimiter;

select func_is_empty('    ')  返回  1

select func_is_empty('') 返回 1

select func_is_empty(null) 返回 1

select func_is_empty('a') 返回 0

相應的就有判斷非空的函式

func_is_not_empty 引數非空返回1,否則返回0

delimiter $$

drop function if exists `func_is_not_empty` $$

create function func_is_not_empty (pi_value text) returns tinyint(4)

begin

return !isnull(pi_value) and pi_value != '';

end $$

delimiter;

select func_is_not_empty(null);   返回 0

select func_is_not_empty(''); 返回 0

select func_is_not_empty(' '); 返回 0

select func_is_not_empty('a'); 返回 1

mysql自定義函式優點 MySQL自定義函式

在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...

mysql自定義函式命名 MySQL自定義函式

在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...

mysql 自定義函式

今天要做乙個排序,有中文和英文的,資料庫採用utf8編碼,排除來的不對,所以需要將中文轉換成中文的第乙個字母,然後來排序 先小小的看一下mysql的自定義函式 drop function if exists fntable 如果存在就刪除 delimiter 函式開始 create function...