通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>数 据 库>>Oracle>>正文 新版上线![旧版]
注:打开慢时请稍等

从Oracle迁移到SQL Server的陷阱

http://www.iyit.net  日期:2006-5-6 9:01:10  来源:转载  点击:
参加讨论】在把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查询如下:

  SELECT to_char(123.45 ,99999999999999) from tab
  SELECT to_char(EXPIRY_DATE,’DDMONYYYY’) from tab

  以下是SQL Server版本的查询:

  SELECT STR(123.45, 14)
  SELECT STR(round(123.455 , 2),12,2)
  SELECT CAST(REPLACE((CONVERT(varchar(12) , EXPIRYDATE, 106 )),’ ’ , ’’) as varchar(9))

  LENGTH和LEN

  以下是Oracle的查询:

  SELECT LENGTH(’SQLMAG’) "Length in characters" FROM DUAL;

  以上查询在SQL Server下是这样写的:

  SELECT LEN(’SQLMAG’) "Length in characters"

  日期

  以上两种系统都具有各自的当前日期和时间格式。

  Oracle取得日期和采用如下方式:

  SYSDATE

  SQL Server则是这样的:

  GETDATE()

  你可以用各种语法操作日期。以下的代码对Oracle日期值中的月份进行了格式调整(返回日期再加上n月):

  Select add_months(sysdate,12) from dual

  SQL Server则是如下完成同等功能的:

  Select dateadd(mm,12,getdate())

  数据的减法也不同。以下代码在Oracle中直接对数据进行减法操作:

  SELECT sysdate -add_months(sysdate,12) FROM dual

  SQL Server则是这样做的:

  SELECT datediff(dd, GetDate(),dateadd(mm,12,getdate()))

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:本地管理表空间与字典管理表空间的比较
下一篇:ORACLE数据库容灾复制解决方案share Plex
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
MYSQL列类型参考 在Windows上安装MySQL 获得和安装MYSQL软件
安全网络访问mysql数据库服务器 更新MySQL数据库服务 运行多个MYSQL服务器
优化MYSQL服务器 使用MYSQL备份数据恢复 备份和拷贝MYSQL数据库
MYSQL日志文件维护 MYSQL用户帐号管理 MySQL服务器的启动和关闭
新的MySQL安装的安全性 MySQL重定位数据目录的内容 MySQL数据目录的位置
MySQL管理介绍 需要避免的MYSQL客户机程序设计错误 MYSQL图像数据的处理
对MYSQL查询中有疑问的数据进行编码 在MYSQL结果集上执行计算、 客户机程序5—MYSQL交互式查询程序
如何处理MYSQL查询 MYSQL客户机程序3—产生连接代码模块 MYSQL客户机程序2—增加错误检查
最新更新 热点排行 推荐新闻
脱机备份与恢复实战
Oracle 9i的备份和恢复机制
存储管理——深入Oracle 9i核心
如何执行实例程序
研究生管理信息系统的开发流程
MYSQL列类型参考
获得和安装samp_db样例数据库分发包
在Windows上安装MySQL
获得和安装MYSQL软件
安全网络访问mysql数据库服务器
更新MySQL数据库服务
运行多个MYSQL服务器
优化MYSQL服务器
使用MYSQL备份数据恢复
备份和拷贝MYSQL数据库
Oracle 9i锁
为数据库的表自动生成行号--为分页打好
Oracle中关于逻辑备份与恢复
脱机备份与恢复实战
Oracle 9i的备份和恢复机制
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
优秀公益广告作品欣赏(7)
QQ最新版下载 2006 beta2 体验新感受 
Office2007简体中文版浮出水面 美图抢
WEB服务器配置全攻略(三)
优秀公益广告作品欣赏(6)
优秀公益广告作品欣赏(4)
优秀公益广告作品欣赏(1)
传统计算机病毒传播能力破坏性在提高
内存为何有“两面性”
AMD水货盒装CPU识别方法
IP地址资源2012年枯竭 部署IPv6很紧迫
古老问题有新解:世上先有鸡蛋后有鸡
Dreamweaver MX 2004从零开始(1)
利用CSS改善网站可访问性
如何让MM的脸通透可人
msn8.0下载
ASP 五大高效提速技巧
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息