用於遞迴查詢id(通過parentid關聯)引數為int 型別的值:
create definer=`root`@`%` function `getchildlist`(rootid int) returnstext
charset utf8
begin
declare stemp text
;
declare stempchd text
;
set stemp ='$
'; set stempchd =
cast(rootid as
char
);
while stempchd is
notnull
do
set stemp = concat(stemp,','
,stempchd);
select group_concat(id) into stempchd from sys_company where find_in_set(parent_id,stempchd)>0;
endwhile
;
return
stemp;
end
通常 group_concat 有長度限制,當結果大於這個限制時就會導致查詢出的資料不全,解決方案:改變group_concat 的最大長度。
首先查詢一下目前group_concat 的長度限制(預設好像是1024):
select@@global.group_concat_max_len;
修改長度:
set global group_concat_max_len=102400;
修改後可以在執行下查詢命令,看一下長度是否修改成功。
但這種方法mysql服務重啟後就會失效。徹底修改需要修改mysql的配置檔案:
在mysql配置檔案中my.conf或my.ini中新增:
#[mysqld]
group_concat_max_len=102400
或group_concat_max_len = -1 # -1為最大值
重啟mysql服務即可。
mysql自定義函式優點 MySQL自定義函式
在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...
mysql自定義函式命名 MySQL自定義函式
在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...
mysql 自定義函式
今天要做乙個排序,有中文和英文的,資料庫採用utf8編碼,排除來的不對,所以需要將中文轉換成中文的第乙個字母,然後來排序 先小小的看一下mysql的自定義函式 drop function if exists fntable 如果存在就刪除 delimiter 函式開始 create function...