在長串中查詢小串出現的次數
例如:在 「我愛我家」 查詢"我"出現了幾次
自定義函式
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...