`
kakajw
  • 浏览: 265126 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

应用从Oracle迁移至SQLServer时SQL转换

阅读更多

一、关于SQL标准和扩展

 

目前主流关系数据库管理系统(包括Oracle和SQLServer)均支持遵守ANSI SQL89标准。

基于通用SQL标准(ANSI SQL89标准),大部分数据库厂商对SQL语言进行扩展,

具有较大影响力的SQL扩展有Transact-SQL和PL/SQL

 

Transact-SQL(T-SQL)

SQLServer和Sybase Adaptive Server(ASE)系列数据库的SQL语言引擎属于T-SQL;

但自SQLServer version 4.2后,SQLServer和Sybase对T-SQL支持出现分歧,

目前已形成Microsoft T-SQL和 Sybase T-SQL两种标准。

 

PL/SQL(Procedural Language/SQL,过程化SQL语言)

Oracle的SQL语言引擎属于PL/SQL,MySQL目前不支持 PL/SQL

 

关于Transact-SQL语言和PL/SQL语言

同JAVA,C/C++一样,两者属于编程语言;

可在tiobe编程语言排行榜单查询到(Transact-SQL在第10位,PL/SQL在第23位,2014年10月

 

 

二、应用从Oracle迁移至SQLServer

目前情况是,该应用(某应用)同数据库的所有交互均集中在SQL层面;

因此,应用的数据库迁移的主要工作是将已存在的PL/SQ标准的SQL转换成Microsoft T-SQL标准的SQL;

完成这个转换的前提是要清楚上述两种SQL标准的差异。

 

总结一下,该应用中涉及的两种SQL标准的差异有:

 

特征项              Microsoft T-SQL                         PL/SQL

字符连接            使用加号+作为连接符                 使用||符号作为连接符

外连接                left join和right join                       left join和right join,或者(+)方式                                             

系统时间            getdate()                                       关键字SYSDATE 

时间格式化        convert()结合replace()               TO_CHAR()

根据null取值      isnull()                                          NVL()

根据条件取值     CASE WHEN语句                       CASE WHEN语句,或者DECODE()

自动字符填充     REPLICATE()结合right()或left()  RPAD()或LPAD()

去除前后空字符 ltrim()和rtrim()                               trim()

字符子串             substring()                                     substr()

 

两种SQL标准还有其他很多差异,这里只列出该应用涉及的部分。

 

应用迁移时,sql转换的典型例子

 

1.取系统当前日期时间,并格式化成yyyymmddhh24miss的字符串

 

PL/SQL:TO_CHAR(SYSDATE,'yyyymmddhh24miss')

Microsoft T-SQL:replace(replace(replace(convert(varchar,getdate(),120),'-',''),':',''),' ','')

 

 

2.对于数值类型的SEQ_NO字段,其值不会超过6位数

若SEQ_NO为null,则赋值为0,否则取其值

将SEQ_NO转化为6位数字的字符串,不足6位左边补0

 

PL/SQL:LPAD(NVL(SEQ_NO, 0), 6, '0')

Microsoft T-SQL:right(REPLICATE('0', 5)+CONVERT(VARCHAR, isnull(SEQ_NO, 0)), 6)

 

 

3.对于字符类型的flag字段

若flag='y',则表达式取值为1

若flag='n',则表达式取值为0

其他情况,表达式取值为-1

 

PL/SQL:DECODE(flag, 'y', 1, 'n',0,0) value

Microsoft T-SQL(或PL/SQL):(CASE WHEN flag='y' THEN 1 WHEN flag='n' THEN 1 ELSE -1 END) value

 

 

该应用中,Microsoft T-SQL和PL/SQL都支持的特征项:

字母小写转换:  LOWER()

字母大写转换:  UPPER()

取最小值:  MIN()

取最大值:  MAX()

is null条件判断:  select * from tableA where cloumnA is null

0
0
分享到:
评论

相关推荐

    oracle数据库导入到SQL server.docx

    总体思路是:先将Oracle数据库类型转换为SQL Server模式,接着同步Oracle数据到SQL Server数据库,最后迁移Oracle数据到SQL Server数据库。 本文详细讲解了如何使用Microsoft SQL Server Migration Assistant for ...

    Oracle数据库导入到SqlServer步骤(图文篇)

    Oracle 数据库到 SqlServer 数据迁移步骤详解 Oracle 数据库到 SqlServer 的数据迁移是一项复杂的任务,需要经过多个步骤来完成。本文将详细介绍如何将 Oracle 数据库导入到 SqlServer 中。 Step 1-6: 数据源设置...

    sqlserver自动生成sql语句工具sqlserver转oracle

    描述中提到的"sqlserver转oracle"则是指将SQL Server数据库的内容迁移到Oracle数据库的过程。这个过程涉及到SQL语法的转换,因为SQL Server和Oracle虽然都遵循SQL标准,但各自的语法特性和函数库有所不同。例如,SQL...

    SQLSERVER到ORACLE的数据库迁移

    本文将详细介绍如何使用Java语言实现从SQL Server到Oracle数据库的数据迁移过程。具体而言,我们将以一个具体的例子——“中华人民共和国行政区划代码”表的数据迁移来展开讨论。 #### 二、数据库类型映射 在进行...

    oracle到sqlserver存储过程语法转换

    在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并指导如何进行有效的转换。 #### 一、基本语法...

    实现ORACLE与SQLSERVER数据库间的数据抽取与转换工具

    总结来说,实现“Oracle与SQLServer数据库间的数据抽取与转换工具”涉及的主要知识点包括:数据库连接、SQL查询、数据转换规则、多数据库系统间的语法差异理解和编程实现。这个工具的源代码压缩包"复件 zExtractor...

    SqlServer迁移至oracle所需jtds

    本案例中,我们关注的是将SQL Server数据库迁移至Oracle数据库的过程,主要涉及到一个名为"jtds"的组件。以下是关于这个过程的详细知识点: 1. SQL Server与Oracle:SQL Server是由微软公司开发的关系型数据库管理...

    SqlServer表结构转oracle表结构

    在数据库管理领域,将SQL Server的表结构转换到Oracle数据库是一项常见的需求,特别是在系统迁移或数据整合的过程中。本文将详细探讨如何实现这一过程,并提供C#开发源码的相关信息。 首先,我们需要理解SQL Server...

    oracle迁移SQL server官方工具

    此工具用于从oracle数据库迁移至sqlserver,从官网下载的!还不够50个字啊啦啦啦啦啦啦啦

    sqlserver迁移到oracle

    SSMA是由Microsoft提供的,专为迁移SQL Server到Oracle设计的工具。它可以自动分析SQL Server的数据库结构,并转换成Oracle兼容的SQL脚本,同时也支持数据迁移。 6. **迁移步骤**: - **评估**:首先,评估源...

    从SQLServer迁移大批量数据到Oracle

    ### 从 SQL Server 迁移大批量数据到 Oracle 在 IT 领域,数据库迁移是一项常见的任务,尤其是在企业级应用中。随着业务的发展和技术的进步,企业可能需要将现有的 SQL Server 数据库迁移到 Oracle 数据库。本文将...

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    本篇文章将详细探讨如何将ORACLE数据库中的BLOB(Binary Large Object)字段导入到SQL SERVER中的IMAGE字段,这通常涉及到数据转换、数据迁移以及可能的数据类型兼容性问题。 首先,让我们了解BLOB和IMAGE字段的...

    ORACLE移植到SQL SERVER上的软件

    在不同的业务场景下,用户可能需要将数据从Oracle迁移到SQL Server,以适应新的技术架构或满足特定的业务需求。在这种情况下,"ORACLE移植到SQL SERVER上的软件"提供了一种解决方案。 该软件的主要功能是使用“SQL ...

    Oracle和SqlServer语法区别

    下面将概述Oracle和SqlServer语法之间的相同点和不同点,并提供一些转换策略。 一、SELECT语句 SELECT语句是最基本的SQL语句,用于从数据库表中检索数据。Oracle和SqlServer的SELECT语句语法类似,但是也存在一些...

    ORACLE和SQL Server的语法区别

    对于希望将现有的Oracle数据库系统迁移至SQL Server平台的用户来说,这些知识尤为重要。 #### 二、数据操纵语言(DML)语句 **1. SELECT语句** - **Oracle:** Oracle支持复杂的查询,包括连接操作、分组、排序等...

    oracle迁移SQL server数据库迁移

    从oracle数据库迁移至SQLserver数据库,官方工具好用

    Sql语法转换为Oracle语法

    这通常是因为在系统迁移或跨平台开发时,需要将SQL Server的查询语句适应Oracle数据库的语法。 描述中提到的"SqlConvertToOracle.pas"是一个关键文件,它可能是一个用Delphi编写的源代码文件,包含了实现SQL语句...

    从sql server 迁移数据到oracle 的步骤.doc

    从 SQL Server 迁移数据到 Oracle 的步骤 在本文中,我们将详细介绍从 SQL Server 迁移数据到 Oracle 的步骤。数据迁移是数据库管理中的一项重要任务,它可以将数据从一个数据库管理系统迁移到另一个数据库管理系统...

    从Sql Server迁移数据到Oracle.docx

    Sql Server迁移数据到Oracle Sql Server迁移数据到Oracle是一个复杂的过程,需要使用正确的工具和技术来实现。下面是Sql Server迁移数据到Oracle的知识点: 1. 使用Oracle Sql Developer迁移工具:Oracle Sql ...

    通过ORACLE通用连接访问SQLServer数据库的方法

    在IT行业中,数据库之间的互操作性是至关重要的,特别是在企业级应用中,可能需要整合不同类型的数据库系统。本文将详细探讨如何使用Oracle的通用连接(JDBC)技术来访问SQL Server数据库,帮助你理解这一跨数据库...

Global site tag (gtag.js) - Google Analytics