Oracle轉換MySql之遞歸start with詳解
更新時間:2024年12月23日 09:04:10 作者:海沫汐
Oracle中的`startwith`函數(shù)在MySQL中需要轉換為使用`LIKE`操作符,并且可能需要自定義函數(shù)來實現(xiàn)類似的功能
Oracle轉換MySql之遞歸start with
Oracle轉換Mysql之start with
oracle轉mysql其實很多細節(jié),這邊就不一 一 描述了,這邊先整理些“坎”吧!
Oracle中start with…
select * from
grade_group gg
start with gg.group_code=#{groupCode}
connect by gg.parent_id= prior gg.id
order by gg.group_level轉換為MySql為
SELECT
*
FROM
grade_group
WHERE FIND_IN_SET(ID, getGradeGroupChild(#{groupCode}))
ORDER BY group_level這里并非只要簡單改下sql就行
可以看出需要一個函數(shù)支撐"getGradeGroupChild"
下面提供了這個函數(shù)
DROP FUNCTION IF EXISTS `getGradeGroupChild`;
DELIMITER $$
CREATE FUNCTION `getGradeGroupChild`(GROUPCODE VARCHAR(100)) RETURNS VARCHAR(10000) CHARSET utf8
BEGIN
DECLARE sChildList VARCHAR(10000);
DECLARE sChildTemp VARCHAR(1000);
--這里我第一次是要將傳進來的GROUPCODE 轉換成id,然后去遞歸查詢
SELECT id INTO sChildTemp FROM grade_group WHERE GROUP_CODE = GROUPCODE;
WHILE sChildTemp IS NOT NULL DO
IF (sChildList IS NOT NULL) THEN
SET sChildList = CONCAT(sChildTemp,',',sChildList);
ELSE
SET sChildList = CONCAT(sChildTemp);
END IF;
SELECT GROUP_CONCAT(id) INTO sChildTemp FROM grade_group
WHERE FIND_IN_SET(PARENT_ID, sChildTemp)>0;
END WHILE;
RETURN sChildList;
END$$
DELIMITER ;總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Oracle表中重復數(shù)據(jù)去重的方法實例詳解
這篇文章主要介紹了Oracle表中重復數(shù)據(jù)去重的方法實例詳解的相關資料,需要的朋友可以參考下2017-07-07
Oracle數(shù)據(jù)庫中通用的函數(shù)實例詳解
OracleSQL提供了用于執(zhí)行特定操作的專用函數(shù),這些函數(shù)大大增強了SQL語言的功能,下面這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)庫中通用函數(shù)的相關資料,需要的朋友可以參考下2022-03-03

