当前位置: 首页 > news >正文

数据库SQL高阶操作1——Mysql8转换DM8相关sql语法写法优化调整,包括递归,函数,以及方言等特殊操作的改造支持

在实际项目开发过程中,尤其是当前各国之间的技术博弈异常剧烈,加上国内对于开源项目或者国产项目的支持度越来越高,因此在适配有关涉及国内政府高校以及国央企单位项目时,DM数据库的选择成了一个必需的操作,也是一个不得已而为之的选择,所以才有了Mysql8转换DM8改造和调整这篇文章。

序言:dm数据库可视化链接工具

官方推荐可使用SQLark,官方链接如下:

https://www.sqlark.com/

一.字符串转换出错

在mysql语法的查询中,即使数据类型不一致的情况下依然可以正常执行查询,但是DM在关联查询是必需保证关联条件的数据类型一致。

二.递归语法改造,可参照oracle语法

1.DM8下递归语法的说明
select fie1,fie2... 
from tab1
-- 开始查询的父级条件,也可以是where后面的查询条件
-- 如果没有,可以写成查询所有“START WITH 1 = 1”
START WITH pid = '66c59905'
-- 关联子级的条件(需要参照START WITH来确定)
-- 从树的根节点依次往下(最后的叶节点)查询:PRIOR id =  pid
-- 从树的最后叶节点依次往上(到根节点)查询:id = PRIOR  pid
CONNECT BY PRIOR id =  pid

其他相关具体请参考dm下语法和示例说明:

DM8递归语法说明1

DM8递归语法说明2

DM8递归语法说明3

2.Mysql8下递归基础写法
with RECURSIVE sDBa as (select * fromServ_Area_Infowherepid = '66c59905'unionselect defAreaDB.* fromServ_Area_Info defAreaDBinner join sDBa as PRIOR on PRIOR.id = defAreaDB.pid)
select * from sDBa
3.DM8下基于Mysql8基础递归语法改造
select * from Serv_Area_Info 
START WITH pid = '66c59905'
CONNECT BY PRIOR  id =  pid
4.Mysql8下递归关联子查询
with RECURSIVE sDBa as 
(       select * from Serv_Area_Info              where         id in   (         select defenceAreaId         from Serv_defenceArea         where relateId = '66c59905'         )          union          select defAreaDB.* from Serv_Area_Info defAreaDB          inner join sDBa as PRIOR on PRIOR.id = defAreaDB.pid         
)         
select * from sDBa 
5.DM8下基于Mysql8递归关联子查询改造
select id from Serv_Area_Info 
START WITH 
id  in (         select defenceAreaId         from Serv_defenceArea         where relateId = '66c59905'         )
CONNECT BY PRIOR  id =  pid 

三.不同数据库的方言和函数改造说明

1.DM8数据库不支持【`fie`】,须使用单引号或者双引号'fie'

2.Mysql8字符串分析函数 group_concat()在DM8下不支持,须使用WM_Concat()

http://www.dtcms.com/a/316626.html

相关文章:

  • vue2 vue3 区别
  • PostGIS面试题及详细答案120道之 (101-110 )
  • 解决微信小程序中camera组件被view事件穿透触发对焦以及camera的bindtap事件
  • 猜数字游戏 Java
  • 并发编程的三要素是什么
  • Docker Desktop
  • 实战项目3-工控软件-2.0- 自定义控件HMILabel的创建
  • 用 Spark 找出最大值:高性能计算的正确姿势
  • 线性筛和os数组(牛客多校25年#7-G)
  • (ZipList入门笔记二)为何ZipList可以实现内存压缩,可以详细介绍一下吗
  • web_socket_channel 后台重连机制失败
  • Kafka 的基本操作(1)
  • Web存储技术详解:sessionStorage、localStorage与Cookie
  • MySQL 深分页优化方案
  • Matplotlib(六)- 坐标轴定制
  • 【motion】HumanML3D 的安装1:环境搭建
  • 制造业ERP系统架构设计方案(基于C#生态)
  • [激光原理与应用-151]:光学器件 - 光学平晶:高精度平面度检测的核心工具
  • 用phpstudy安装php8.2后报错:意思是找不到php_redis.dll拓展时
  • 如何对云环境或者超融合系统进行性能测试?
  • Pandas 入门:数据分析的得力工具
  • PowerBI VS QuickBI 实现图表的动态配色
  • Vue 2 渲染链路剖析
  • Linux逻辑卷管理操作指南
  • Arxiv-Daily
  • AUTOSAR进阶图解==>AUTOSAR_RS_ECUResourceTemplate
  • 【前端】使用jQuery播放图片,类似播放幻灯片一样
  • Redis面试精讲 Day 11:Redis主从复制原理与实践
  • RAG向量检索增强生成
  • MediaPipe框架解析(五):c++ face_mesh解析