t-sql是sql server的语言引擎,而oracle的语言引擎却是plsql。这两种查询语言都对ansi sql-92标准进行了扩展以提供额外的支持力度。你所创建的应用程序几乎都要用到这些补充特性。本文就对最常用的、非标准的oracle扩展进行了说明,同时还要介绍下如何对这些扩展进行转化以用在sql server环境下。

列的选择

用plsql执行数据查询的时候,from子句是必须的,这同sql server的要求是一样的。 select语句必须选择针对的数据表。在oracle数据库内有一种特殊的表dual。dual表是oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的select中。dual表由oracle连同数据字典一同创建,所有的用户都可以用名称dual访问该表。这个表里只有一列dummy,该列定义为varchar2(1)类型,有一行值x。从dual表选择数据常被用来通过select语句计算常数表达式,由于dual只有一行数据,所以常数只返回一次。

oracle下的dual查询如下所示:

select  ‘x’ from dual

而对等的sql server查询则是下面这个样子:

select ‘x’

以下是null相关的知识,用到了dual:

sql> select 1 from dual where null=null;

没有查到记录

sql> select 1 from dual where null=;

没有查到记录

sql> select 1 from dual where =;

没有查到记录

sql> select 1 from dual where null is null;

1

———

1

sql> select 1 from dual where nvl(null,0)=nvl(null,0);

1

———

1

查看当前连接用户

sql> select user from dual;

查看当前日期、时间

sql> select sysdate from dual;

连接

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()))

参考:

builder.com

server数据库与oracle,浅析Oracle和SQL Server-数据库专栏,ORACLE相关推荐

  1. db2 mysql sql server_下文给大家介绍mysql数据库介绍,具体详情如下所示:MySQL数据库:Oracle、DB2、SQL Server、MySQL、access、mang...

    下文给大家介绍mysql数据库介绍,具体详情如下所示: MySQL 数据库: Oracle.DB2.SQL Server.MySQL.access.mangodb.bigtable 关系型数据库 大型 ...

  2. 小麦苗数据库巡检脚本,支持Oracle、MySQL、SQL Server和PG等数据库

    文章目录 一.巡检脚本简介 二.巡检脚本特点 三.巡检结果展示 1.Oracle数据库 2.MySQL数据库 3.SQL Server数据库 4.PG数据库 5.OS信息 四.脚本运行方式 1.Ora ...

  3. 关于软件开发中的数据库 Sybase、Oracle、DB2、SQL Server、MySQL、SQLite、Access

    常用的关系型数据库有 Sybase.Oracle.DB2.SQL Server.MySQL.SQLite.Access. 正入上面的排序一样,Sybase.Oracle.DB2属于海量级别的大型数据库 ...

  4. 【Docker】安装Presto连接Hive、mysql、oracle、postgresql、SQL server等7种类型数据库

    目录 1.简介 2.下载安装 1)下载镜像 2)下载presto客户端jar文件 3)将hadoop配置拷贝到容器 4)新增hive.properties配置文件 5)重启容器(在linux命令行下) ...

  5. Oracle 9i与MS SQL Server 2000之比较连载五.zz

    http://kb.cnblogs.com/a/1153156 Oracle 9i与MS SQL Server 2000之比较连载五 2008-04-14 18:13 四.Oracle中新的数据库对象 ...

  6. SQL Server链接服务器(一台机器SQL Server登陆,同时映射登陆到另外一台远程服务器的数据库)

    现在我有一个需求是需要在两个不同的SQL SERVER 2012的服务器之间进行数据访问和更新.我们需要把Server One的数据插入到Server Two的服务器上去,一天执行一次任务.我们的首选 ...

  7. sql2008能否打开mysql数据库_mysql数据库数据能不能导入到sql server中

    点"测试"按钮确认你的链接是正确的. Press the "Test" button to ensure your connection settings ar ...

  8. 利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法)

    利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法) 安装好Navicat Premium,SQL Serve ...

  9. #数据库--第1章 Windows 下的数据库导入 TPCH 数据(以 SQL Server 作为示例,MySQL同样适用)

    #数据库--第1章 Windows 下的数据库导入 TPCH 数据(以 SQL Server 作为示例,MySQL同样适用 一.TPCH 简介 二.TPCH 文件 三.生成 TPCH 数据 四.导入 ...

  10. 安装数据库显示参考服务器错误日志,Sql Server安装出错,安装程序配置服务器失败的解决方法小结...

    错误重现:首先在控制面板里卸载了sqlserver软件,一切正常,然后重启(一定要重启,否则没法重装),执行sqlserver的安装程序,一切似乎都正常,一路下一步,安装到了最后,突然提示" ...

最新文章

  1. GROMACS运行参数之md.mdp文件详解
  2. orth--将矩阵正交规范化
  3. tinyxml语法讲解之写xml
  4. 这个一夜暴富的秘诀你还不知道?
  5. Appium查找元素
  6. APP上架证书无效:解决
  7. 基于 Docker 打造前端持续集成开发环境
  8. 阿里巴巴集团的几十款著名开源项目(Java)
  9. oracle_面试题
  10. objective-C 的内存管理之-引用计数
  11. idea中配置Springboot热部署
  12. 修改Google toolbar for firefox的默认语言
  13. 数据结构 2-3-3 循环链表
  14. centos 7 64位虚机上android4环境运行
  15. 2021信息安全工程师考试汇总--1220更新考试结果
  16. Listary基本操作
  17. 社会工程学读书[1]
  18. linux dm9000网卡 原理图怎么看,LINUX移植——DM9000网卡移植
  19. ubuntu安装nessus
  20. 计算机专业自我总结100字,毕业自我鉴定100字

热门文章

  1. [渝粤教育] 西南科技大学 英语语法1 在线考试复习资料
  2. 【渝粤教育】电大中专中成药作业 题库
  3. 【渝粤教育】广东开放大学 行政管理 形成性考核 (35)
  4. 【渝粤题库】陕西师范大学291003综合英语(三)作业(高起专、高起本)
  5. 【渝粤题库】国家开放大学2021春3979会计学概论题目
  6. 【渝粤题库】国家开放大学2021春2321物流学概论题目
  7. mysql创建连接失败怎么办,MYSQL在Windows 2003上连接不上的解决方法
  8. php入门速成(2),PHP入门速成(1)
  9. python如何读取数据保存为新格式_python,初学者应用实例:读取文件中的数据,将将北京时间转换成世界时间,再保存成新的CSV格式文件...
  10. asynchttpclient 超时_dnf这才是混子的毕业套装,却发现超时空漩涡不买账!