MySQL自定義函式遞迴查詢

2022-01-23 10:57:23 字數 1206 閱讀 7982

用於遞迴查詢id(通過parentid關聯)引數為int 型別的值:

create definer=`root`@`%` function `getchildlist`(rootid int) returns

text

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...