【导语】“春天要吃可丽饼”通过精心收集,向本站投稿了4篇教你怎样把Oracle查询转换为SQL Server综合教程,以下是小编整理后的教你怎样把Oracle查询转换为SQL Server综合教程,希望能够帮助到大家。
- 目录
篇1:教你怎样把Oracle查询转换为SQL Server综合教程
在把Oracle查询转换为SQL Server的时候要特别当心一些不容易注意到的问题,我们知道,T-SQL是SQL Server的语言引擎,而Oracle的语言引擎却是PLSQL。这两种查询语言都对ANSI SQL-92标准进行了扩展以提供额外的支持力度。你所创建的应用程序几乎都要用到这些补充特性。本文就对最常用的、非标准的Oracle扩展进行了说明,同时还要介绍下如何对这些扩展进行转化以用在SQL Server环境下。
列的选择
用PLSQL执行数据查询的时候,FROM子句是必须的,这同SQL Server的要求是一样的。 SELECT语句必须选择针对的数据表。在Oracle数据库内有一种特殊的表DUAL。DUAL表由
Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2(1)类型,有一行值X。
从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。
Oracle下的DUAL查询如下所示:
SELECT ‘x’ FROM dual
而对等的SQL Server查询则是下面这个样子:
SELECT ‘x’
连接
Oracle用|| 符号作为连接符,而SQL Server的连接符是加号:+ 。
Oracle查询如下所示:
Select ‘Name’ || ‘Last Name’
From tableName
对应的SQL Server查询如下所示:
Select ‘Name’ + ‘Last Name’
数字取舍
Oracle数据库内有一个TRUNC函数,该函数返回m位十进制数的n位;如果省略m则n就是0位。m的值可以为负,表示截去小数点左边m位数字。
在SQL Server下可以用Round或者Floor。
以下是Oracle查询:
SELECT TRUNC(15.79,1) “Truncate” FROM DUAL;
下面是同类查询的SQL Server版本:
SELECT ROUND(15.79, 0) rounded ,
ROUND(15.79, 0,1) truncated
SELECT FLOOR(ROUND(15.79, 0)),
FLOOR(ROUND(15.79, 0,1) )
数字转换
Oracle的TO_CHAR函数可以把n位NUMBER数据类型转换为VARCHAR2 数据类型,同时采用可选的数字格式。
SQL Server则通过STR函数返回数字转换之后的字符数据。不过,该函数不具方便的Format参数。
Oracle查询如下:
bordercolorlight = “black” bordercolordark = “#FFFFFF” align=“center”>
SELECT to_char(123.45 ,99999999999999) from tab SELECT to_char(EXPIRY_DATE,'DDMONYYYY') from tab 以下是SQL Server版本的查询: SELE 关 键 字:SQLServer 有时候,我们总希望快捷地创建一个只包含text文本的HTML页面,当然通过更改文件后缀的方式也可以,但这种方法并不便捷,有没有更快捷一点的方法呢?免费实用的txt2html程序就可以帮你做到这一点。 1.下载并安装 text2html 格式转换软件; 2.从 text2html 安装目录找到并双击 text2html 图标,以激活右键的格式转换功能; 3.鼠标右键点击需要转换的txt文本,选择并点击 txt2html 即可完成格式转换, Txt2html可以令一个没有HTML基础的用户通过几下简单点击就能得到一个HTML页面,它可以从任何txt文档生成简单的HTML网页,相比于改文件后缀要更简单、更快捷。 点击阅读更多学院相关文章>> 分享到 oracle|server|sqlserver 1,系统安排 为了oracle版本和sqlserver版本能很方便的转化,也为了两个版本能同步修改,特别是业务逻辑层,现决定如下: A,两个版本的业务逻辑层都放在source目录下。在该目录下有两个目录: sql 和ora。这两个目录有三个文件: common.pbl ,water_modi.pbl,dw_version.pbl。 这三个 文件里面绝大部分是数据窗口,主要是因为sql server 和oracle的语法有差别。如果只是因为数据窗口有双引号在sql server里不能用,那么把数据窗口的select语法的字段引号去掉即可,因为没有引号的select语句在sql server和oracle下面都是可用的。修改的过程中注意update属性。 B,不同的数据库将使用不同的目录。 2,系统环境的建立 每台机器上建立下面的磁盘映射: P 指向 \\\\oraservr\\p237 V 指向 \\\\oraservr ql237 或者是 \\\\oraserver\\ora237 源代码在 \\\\oraserver\\code\\water237 ource 里面。 P盘是肯定要有的, V盘由使用什么版本决定。 3,源代码的修改 业务层的修改尽可能的在源代码处,因为这样修改能让两个版本同时修改。 P盘是类库可以不需要修改。 V盘里的数据窗口都需要改。 改sql237里面的数据窗口,要修改和要注意的地方: 替换的方法 oracle里面使用 sql server 里面使用 to_char(readingdate,’yyyymm’) convert(char(6),readingdate,111) to_char(readingdate,’yyyy/mm’) convert(char(7),readingdate,112) decode( , , , ,) case when then end 或者 isnull(x,0) 左右连接 (+) left outer join 修改过程中要注意数据窗口的update属性, 4,工作计划 4,1先修改sql237目录下的三个pbl里面的数据窗口的语法。为了照顾数据窗口的update属性,建议使用edit source的方法,而且select语法字段的引号在sql server版本建议去掉。使用pb的replace功能即可。 4,2 修改某些数据窗口的内嵌式sql 的语法。因为有一些内嵌式sql 也使用了decode ,或者是to_char(),这些语法在sqlserver也是必须代替的。 修改方法: if gs_database = ‘ORACLE’ then ………………decode()……………; else …………………case when then end ………..; end if 4,3 最后的工作是测试。这是最繁琐的最重要的。在测试的过程会发现有一些数据窗口在sql server不能用:修改方法是将字段的引号去掉或者是移到sql 和ora目录里面的dw_version.pbl文件里面,在那里进行修改。 4,4主要的数据表都已经迁移过来了,名字一样,可能在sql server有一些表的字段不够那么请重新导入一次。主要的存储过程都已经翻译过来,名字不一样。在测试的过程会发现有一些视图没有存在,那么请从oracle把语法拷贝出来,在sql server查询分析器里生成之。 SQL(结构化查询语言)就是负责与ANSI维护的数据库交互的标准,最新的版本是SQL-99,还有一个新标准SQL-200n尚处于制定过程中。大多数的数据库都至少遵守ANSI-92标准的部分子集。不过,目前对最新标准的有效性还存在一些争论。专有数据库制造商根据这些标准开发自己的产品,同时制定出自己特有的数据库存储操作新概念。几乎各种不同的数据库都包含了自己特有的语法集合,只是通常很类似ANSI标准。在大多数情况下,尽管有一些数据库实例基于特定的扩展语法会因数据库的不同而产生不同的结果,但总的说来,这些新加的语法不过是对原有标准的扩充。如果数据库操作并没有得到你希望的结果,那么你不妨事先读一读数据库制造商提供的产品说明。 假如到目前为止你头回遭遇SQL语言,那么你怎么也得先理解一些基本的SQL概念。我尽量把这些基本知识阐述得简明扼要,如果你对那些数据库术语还能忍受,你尽可跳到下一节,此外你还可以把自己的问题提交给以下的讨论区。 笼统地说,“SQL数据库”其实就是关系型数据库管理系统(RDMS)通俗的叫法。对某些系统来说,“数据库”也指一组数据表、数据以及相互区分但结构类似的配置信息。在这种情况下,每一SQL数据库的安装都可能由若干数据库组成。在有些系统上,这种数据库则指的是表空间。 数据表是一种包含多行数据的数据库构造,这种数据库构造由命名的列组成。通常数据表构造为包含关系信息,同一数据库或表空间以内可以创建若干数据表。 表内的列保存某一种类型的数据而且应根据其保存数据的内容得以命名。例如,被称为“LastName”的列就应该在每一行包含姓氏条目。正是这一前提的存在才能让关系数据库查询返回一致的结果。 字段(field)指的是某一行某一列对应的数据(或保存数据的地方)。另外,数据集合(data set)则指的是多行多列的数据,而且数据集合通常说明你的数据库或数据表内的全部数据。结果集合(result set)就是从数据库查询返回的数据;它能够描述从单一字段到数据库内全部数据这一范围内的全部信息。 数据库查询就是发送给数据库的SQL指令,这些指令向数据库请求某种施加在数据集合或数据库上的功能。 现在我们就来看看基本的数据库查询,这些查询主要涉及到对数据库内数据的操作。在本文中,所有的例子都采用了标准SQL语言,而且这些基本功能可以转换为应用在几乎各种环境下。 数据查询类型 SQL语言中的数据查询分为4种基本类型: SELECT:这条语句要求数据库返回指定结果的数据集合;你可以用这一语句检索数据库中保存的信息。 INSERT:这条语句用来给数据表增加新一行数据。 DELETE:该语句从你的数据库中删除若干行数据。 UPDATE:该语句修改数据库内的现有数据。 以上的这些语句都有各种各样的限定词和函数供你用来定义有关的数据集合,同时控制查询返回的结果集合。SELECT语句的选项最多。有许多种组合SELECT的查询选项,例如JOIN和UNION等。不过就我们目前来说,本文主要还是关注基本用途。 用SELECT语句检索保存的信息 为了获得数据库中保存的信息就必须采用SELECT语句。其基本功能限制在针对单一数据表操作,当然,其他范围的构造也是有的。为了返回特定列所对应的所有数据行,你可以使用以下语句: 另外,使用通配符“*”可以从表中选出所有的列:SELECT * FROM table_name; 你要愿意自己编码分析以上返回的结果当然也没问题,不过你完全可以采用方便的WHERE子句限制返回的结果集合,该子句可以让你为选择数据定义某些条件。以下查询就会返回“column1”数值等于3的所以数据行:SELECT * FROM table_name WHERE column1 = 3; 除了“=”(等于)条件之外你还可以用到下列条件运算符: = 关 键 字:SQLServer ★ PS转手绘教程篇2:教你快速把txt转换为Html格式
篇3:系统从oracle版本转化为sqlserver版本数据库教程
篇4:怎样掌握SQL Server中的数据查询综合教程
SELECT column1, column2 FROM table_name;
教你怎样把Oracle查询转换为SQL Server综合教程(精选4篇)