新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > Oracle教程 > 正文:教你怎样把Oracle查询转换为SQL Server

教你怎样把Oracle查询转换为SQL Server

新客网 XKER.COM 2007-08-10 来源: yashi 收藏本文

在把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) )

 

共2页: 上一页 [1] [2] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐