Oracle与MySQL语法转换

news2024/10/7 8:23:23

前言

Oracle与MySQL语法转换
场景:系统改造,需要由Oracle切换为MySQL,因而要对代码中的Oracle语法的sql调整为MySQL语法
博客地址:芒果橙的个人博客 【http://mangocheng.com】

sysdate–当前日期

Oracle

使用sysdate

select sysdate from dual;

在这里插入图片描述

MySQL

使用sysdate()、now()

select sysdate();
select now();

在这里插入图片描述


格式化日期

Oracle

使用to_char(sysdate,‘yyyy-MM-dd’)
to_char(sysdate,‘d’):一周的第几天,从星期日开始1-7

select to_char(sysdate,'yyyy-MM-dd') as 日期 from dual;
select to_char(sysdate,'d') as 星期,sysdate as 日期 from dual;

在这里插入图片描述

在这里插入图片描述

MySQL

使用date_format(sysdate(),‘%Y-%m-%d’)
dayofweek(sysdate()):一周的星期,星期日开始,1-7

select date_format(sysdate(),'%Y-%m-%d');
select dayofweek(sysdate()) as 星期,sysdate() as 日期 from dual;

在这里插入图片描述
在这里插入图片描述


日期加减

Oracle

日期相加/减,直接使用加/减号字符 +/-

-- 日期相减,注意1是星期日
select sysdate - (to_char(sysdate-1,'d')) as 前天,to_char(sysdate - (to_char(sysdate-1,'d')),'d') as 前天星期,to_char(sysdate-1,'d') as 昨天星期,to_char(sysdate,'d') as 今天星期 from dual; 

在这里插入图片描述

MySQL

date_add(sysdate(), interval 1 day):加一天
date_sub(sysdate(), interval 1 day):减一天

select date_sub(sysdate(),interval 1 day) as 昨天;
select date_add(sysdate(),interval 1 day) as 明天;
-- 日期相减,注意1是星期日
select date_sub( sysdate(), interval (dayofweek(sysdate()) -1 ) day) as 前天,
	dayofweek(date_sub( sysdate(), interval (dayofweek(sysdate()) -1 ) day)) as 前天星期,
    dayofweek(sysdate()) as 星期;

在这里插入图片描述


月份的加减

Oracle

add_months:月份加/减

-- 月份加减
select add_months(sysdate,-1) as 上一个月日期,
       add_months(sysdate,1) as 下一个月日期 from dual;

在这里插入图片描述

MySQL

adddate(now(),interval 1 month):月份加/减

select adddate(now(),interval -1 month) as 上个月日期;
select adddate(now(),interval 1 month) as 下个月日期;

在这里插入图片描述


临时表使用别名

Oracle

可以不需要别名:对于子查询不需要额外定义别名

select * from (
   select sysdate from dual
);

MySQL

必须定义别名:对于子查询需要额外定义别名,否则会报错:Error Code: 1248. Every derived table must have its own alias

在这里插入图片描述

定义别名t则查询正常

在这里插入图片描述


wm_concat–多列分组合并

Oracle

wm_concat:分组合并

select wm_concat(login_name) from user_account group by creator;

在这里插入图片描述

MySQL

group_concat

select group_concat(login_name) from user_account group by creator;

在这里插入图片描述


nlssort–排序

Oracle

nlssort(字段名,‘NLS_SORT=SCHINESE_PINYIN_M’):按照拼音排序

select * from org_user order by nlssort(user_name,'NLS_SORT=SCHINESE_PINYIN_M');

在这里插入图片描述

MySQL

convert(字段名 using gbk) asc

select * from org_user order by convert(user_name using gbk) asc;

在这里插入图片描述


nvl、nvl2–空值取值

Oracle

nvl(字段a,‘名称1’):当字段a为空时,取值为"名称1"
nvl2(字段a,‘名称1’,‘名称2’):当字段a为空时,取值为"名称2",否则取值为"名称1"

select nvl(leader_names,'名称1'),leader_names from org_user;

在这里插入图片描述

select nvl2(leader_names,'名称1','名称2'),leader_names from org_user;

在这里插入图片描述

MySQL

ifnull(字段a,‘名称1’):字段a为空,取值为"名称1"
If( isnull(字段a),‘名称2’,‘名称1’):字段a为空,取值为"名称2",非空则取值为"名称1",注意参数的顺序

select ifnull(leader_names,'名称1'),leader_names from org_user;

在这里插入图片描述

select if(isnull(leader_names),'名称2','名称1'),leader_names from org_user;

在这里插入图片描述


decode–分支条件判断

Oracle

decode(条件字段,值1,返回值1,值2,返回值2,[值n,返回值n]缺省值):条件字段值为值1时,取值为"返回值1",条件字段值为值2时,取值为"返回值2",都不满足时取值为"缺省值"

select t.work_date,to_char (t.work_date, 'd'),
          decode (
            to_char (t.work_date, 'd'),  -- 取值1周的第几天,从星期日开始
            1, '星期日',
            2, '星期一',
            '缺省值'
          ) as week
        from
          uf_oa_work_diary t

在这里插入图片描述

MySQL

case 条件字段 when 条件1 then 返回值1 when 条件2 then 返回值2 else 缺省值 end:当条件1满足则取值为"返回值1",当条件2满足则取值为"返回值2",都不满足则取值为"缺省值"

select t.work_date,date_format(t.work_date, '%w'), -- 周的天 (0=星期日, 6=星期六)
          (case date_format (t.work_date, '%w')
            when 0 then '星期日'
            when 1 then '星期一'
            when 2 then '星期二'
            else '缺省值'
		   end
          ) as week
        from
          mydb.work_diary t;

在这里插入图片描述


nulls first、null last–空值排序

Oracle

nulls first、null last:空值排在最前面;空值排最后面

select t.leader_names as 排序字段,t.* from org_user t order by leader_names nulls first;

在这里插入图片描述
在这里插入图片描述

MySQL

if(isnull(排序字段),0,1):空值排在最前面
if(isnull(排序字段),1,0):空值排在最后面

select t.leader_names as 排序字段,t.* from org_user t order by if(isnull(t.leader_names),0,1);

在这里插入图片描述

在这里插入图片描述


||–合并字符

Oracle

字符a || 字符b:字符a和字符b合并

select 'a' || 'b' from dual;
select 'a' || ',' || 'b' from dual;
select concat('a','b') from dual;

在这里插入图片描述

MySQL

concat(字符a,字符b):字符a和字符b合并
concat(连接符,字符a,字符b):指定连接的符号,字符a和字符b合并

select concat('a','b');
select concat_ws(',','a','b');

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hdl_graph_slam代码解析

hdl SLAM和定位的关系:HDL和cartographer一样,是离线建图的 整个SLAM系统的架构 包含四个节点: 预处理、 帧匹配、hdl_slam、地面检测 输入点云首先经过预处理进行降采样,然后传给下一个节点。帧匹配通过迭代获取两帧之间运动变化…

【SpringCloud01】微服务架构入门

1.微服务架构理论入门 SpringCloud微服务 2.Boot和Cloud版本选型 上篇:SpringBoot2.X版和SpringCloud H版 下篇:SpringCloud Alibaba 官网强烈推荐SpringBoot2.0以上的版本 Cloud与Boot之间的版本关系 技术选型相关的网站使用在线解析json字符串 由于…

第2章 马尔可夫决策过程

2.1 马尔可夫决策过程(上) Markov Decision Process(MDP) Markov Decision Process can model a lot of real-world problem. It formally describes the framework of reinforcement learningUnder MDP, the environment is ful…

Promise 实现 (从简易版到符合Promise A+规范)

前言 手写 Promise 是面试的时候大家都逃避的送命题,在学些了解后发现通过实现源码更能将新一代的异步方案理解的通透,知其然知其所以然的运用。 如果直接将源码贴到此处势必不能有更大的收获,下面就按实现版本来看做简要分析。 回顾 Prom…

SpringBoot测试类编写

前置要求: a.测试类上需要的注解 SpringBootTest AutoConfigureMockMvc Slf4j b.引入MockMvc类 Autowired private MockMvc mockMvc; c.如果需要前置条件可以用before注解 1.get/delete请求 // 查询Testvoid testQuery() throws Exception {String content mockMvc.perfor…

Django(15):身份和权限认证

目录1.Django中的身份认证模块1.1 用户模型1.2 认证模块1.3 项目搭建演示2.权限管理架构2.1 权限相关数据模型2.2 权限相关功能函数2.3 权限分配函数2.4 权限设置3.资源访问管理1.Django中的身份认证模块 1.1 用户模型 Django中有内建的用户模块django.contrib.auth.models.U…

2022 CNCC 中国计算机大会参会总结

前言 第 19 届 CNCC 于2022年12月8-10日召开,本届大会为期三天,首次采取全线上举办形式,主题为“算力、数据、生态”,重点在保持多样性、聚焦热点前沿话题、平衡学术界和产业界参与等维度展开讨论。大会由CCF会士、中国科学院院士…

【SpringBoot】一文带你入门SpringBoot

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:【Spring】 🥭本文内…

【职场进阶】做好项目管理,先从明确职责开始

优秀的项目管理一定是高效协调各方资源、反馈及时、调整迅速的。 同时可以做到让参与各方在整个项目过程中张弛有序、愉快合作,最终实现产品项目的效益最大化。 那什么是项目呢? 项目是为向客户提供独特的产品或服务而进行的临时性任务,项目有…

TypeScript 对象key为number时的坑

首先在js的对象中有一个设定,就是对象的key可以是字符串,也可以是数字。 不论key是字符串还是数字,遍历对象key的时候,这个key会变成字符串 通过[] 操作符访问key对应值时候,不论是数字还是字符串都转成了 字符串的k…

Chromedriver安装教程

第一步 查看你当前Chrome浏览器的版本,如下图所示: 第二步 查看当前Chrome浏览器的版本号,如下图所示,版本 108.0.5359.125(正式版本) (64 位)中的,108就是我们的版本号。 第三…

VTK-PointPlacer

前言:本博文主要研究VTK中点转换到曲面上的应用,相关的接口为vtkPolygonalSurfacePointPlacer,为深入研究将基类vtkPointPlacer开始讲解。主要应用为在PolyData表面进行画线。 vtkPointPlacer 描述:将2D display位置转换为世界坐…

ospf知识点汇总

OSPF : 开放式最短路径优先协议使用范围:IGP 协议算法特点: 链路状态型路由协议,SPF算法协议是否传递网络掩码:传递网络掩码协议封装:基于IP协议封装,协议号为 89一.OSPF 特点1.OSPF 是一种典型…

基于javaweb(springboot+mybatis)网上酒类商城项目设计和实现以及文档报告

基于javaweb(springbootmybatis)网上酒类商城项目设计和实现以及文档报告 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏…

【Linux】Linux项目自动化构建工具—make/Makefile

目录一.什么是make/MakefileMakefilemake二.Makefile逻辑1.简单依赖2.复杂依赖三.make指令1.make的使用2.clean清理3.伪目标4.make如何确定是否编译访问时间的影响修改时间的影响一.什么是make/Makefile Makefile 在Windows下,我们使用VS、VS Code这些ide编写C/C程…

MySQL的客户端/服务器架构

以我们平时使用的微信为例,它其实是由两部分组成的,一部分是客户端程序,一部分是服务器程序。客户端可能有很多种形式,比如手机APP,电脑软件或者是网页版微信,每个客户端都有一个唯一的用户名,就…

赶紧收藏 | 50个超实用微信小程序,巨好用|||内含免费配音软件

现在App太多了,想用的功能都要下载,但是手机有258g内存不允许这么放肆呀,只能挖掘不占用存的方法了,小程序就解决了这个痛,节省内存,让手机不再卡顿,打游戏也舒服.给大家整理了50个很好用的小程…

【阶段三】Python机器学习11篇:机器学习项目实战:KNN(K近邻)回归模型

本篇的思维导图: 项目实战(KNN回归模型) K近邻算法回归模型则将离待预测样本点最近的K个训练样本点的平均值进行待预测样本点的回归预测。 项目背景 K近邻除了能进行分类分析,还能进行回归分析,即预测连续变量,此时的KNN称为K近邻回归模型。回归问题是一类…

synchronized 重量级锁分析

synchronized 重量级锁分析 1. 背景 在JDK1.6以前,synchronized 的工作方式都是这种重量级的锁。它的实现原理就是利用 kernel 中的互斥量,mutex。主要是内核中的mutex 能够保证它是一个互斥的量。如果线程1拿到了 mutex,那么线程2就拿不到了。这是内核帮我们保证…

二十三、Kubernetes中Pod控制器分类、ReplicaSet(RS)控制器详解

1、概述 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建 控制器创建的pod:kub…