Oracle转换MySql之递归start with详解

 更新时间:2024年12月23日 09:04:10   作者:海沫汐  
Oracle中的`startwith`函数在MySQL中需要转换为使用`LIKE`操作符,并且可能需要自定义函数来实现类似的功能

Oracle转换MySql之递归start with

Oracle转换Mysql之start with

oracle转mysql其实很多细节,这边就不一 一 描述了,这边先整理些“坎”吧!

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就行

可以看出需要一个函数支撑"getGradeGroupChild"

下面提供了这个函数

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 ;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Oracle 查询优化的基本准则详解

    Oracle 查询优化的基本准则详解

    本篇文章是对Oracle查询优化的基本准则进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Oracle表中重复数据去重的方法实例详解

    Oracle表中重复数据去重的方法实例详解

    这篇文章主要介绍了Oracle表中重复数据去重的方法实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • 解决Oracle账户被锁定的问题

    解决Oracle账户被锁定的问题

    这篇文章主要介绍了解决Oracle账户被锁定的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 查看Oracle中是否有锁表的sql

    查看Oracle中是否有锁表的sql

    查看Oracle中是否有锁表的sql,具体是那个用户那个进程造成死锁,锁的级别等等,感兴趣的朋友可以参考下
    2013-09-09
  • Oracle安装遇到INS-30131错误的解决方法

    Oracle安装遇到INS-30131错误的解决方法

    这篇文章主要介绍了Oracle安装遇到错误INS-30131的解决方法,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Oracle数据安全面面观

    Oracle数据安全面面观

    Oracle数据安全面面观...
    2007-03-03
  • ORACLE中锁住/解锁统计信息的操作代码

    ORACLE中锁住/解锁统计信息的操作代码

    从Oracle 10g 开始,Oracle提供了锁定/解锁表统计信息功能,它的目的是阻止数据库自动收集统计信息,防止可能会产生/出现的糟糕的计划,这篇文章主要介绍了ORACLE中锁住/解锁统计信息的操作代码,需要的朋友可以参考下
    2023-09-09
  • Oracle数据库中的触发器详解

    Oracle数据库中的触发器详解

    这篇文章主要给大家介绍了关于Oracle数据库中触发器的相关资料,触发器也是保护数据完整性的一种重要方法,于存储过程不同的是,触发器是通过事件进行触发被执行,存储过程需要被调用执行,需要的朋友可以参考下
    2024-02-02
  • Oracle用PLSQL导出导入dmp表详细图解

    Oracle用PLSQL导出导入dmp表详细图解

    dmp是二进制文件,可跨平台还能包含权限,效率好,这篇文章主要给大家介绍了关于Oracle用PLSQL导出导入dmp表的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Oracle数据库中通用的函数实例详解

    Oracle数据库中通用的函数实例详解

    OracleSQL提供了用于执行特定操作的专用函数,这些函数大大增强了SQL语言的功能,下面这篇文章主要给大家介绍了关于Oracle数据库中通用函数的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论