怎样把Oracle查询转换为SQLServer

 我来答
黑科技1718
2022-10-03 · TA获得超过5818个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:79.5万
展开全部

  在把Oracle查询转换为SQL Server的时候要特别当心一些不容易注意到的问题 我们知道 T SQL是SQL Server的语言引擎 而Oracle的语言引擎却是PLSQL 这两种查询语言都对

  ANSI SQL 标准进行了扩展以提供额外的支持力度 你所创建的应用程序几乎都要用到这些补充特性 本文就对最常用的 非标准的Oracle扩展进行了说明 同时还要介绍下如何

  对这些扩展进行转化以用在SQL Server环境下

  列的选择

  用PLSQL执行数据查询的时候 FROM子句是必须的 这同SQL Server的要求是一样的 SELECT语句必须选择针对的数据表 在Oracle数据库内有一种特殊的表DUAL DUAL表由

  Oracle连同数据字典一同创建 所有的用户都可以用名称DUAL访问该表 这个表里只有一列DUMMY 该列定义为VARCHAR ( )类型 有一行值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就是 位 m的值可以为负 表示截去小数点左边m位数字

  在SQL Server下可以用Round或者Floor

  以下是Oracle查询

  SELECT  TRUNC( ) Truncate FROM DUAL

  下面是同类查询的SQL Server版本

  SELECT ROUND( ) rounded

  ROUND( ) truncated

  SELECT FLOOR(ROUND( ))

  FLOOR(ROUND( ) )

  在把Oracle查询转换为SQL Server的时候要特别当心一些不容易注意到的问题 我们知道 T SQL是SQL Server的语言引擎 而Oracle的语言引擎却是PLSQL 这两种查询语言都对

  ANSI SQL 标准进行了扩展以提供额外的支持力度 你所创建的应用程序几乎都要用到这些补充特性 本文就对最常用的 非标准的Oracle扩展进行了说明 同时还要介绍下如何

  对这些扩展进行转化以用在SQL Server环境下

  列的选择

  用PLSQL执行数据查询的时候 FROM子句是必须的 这同SQL Server的要求是一样的 SELECT语句必须选择针对的数据表 在Oracle数据库内有一种特殊的表DUAL DUAL表由

  Oracle连同数据字典一同创建 所有的用户都可以用名称DUAL访问该表 这个表里只有一列DUMMY 该列定义为VARCHAR ( )类型 有一行值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就是 位 m的值可以为负 表示截去小数点左边m位数字

  在SQL Server下可以用Round或者Floor

  以下是Oracle查询

  SELECT  TRUNC( ) Truncate FROM DUAL

  下面是同类查询的SQL Server版本

  SELECT ROUND( ) rounded

  ROUND( ) truncated

  SELECT FLOOR(ROUND( ))

  FLOOR(ROUND( ) )

   数字转换

  Oracle的TO_CHAR函数可以把n位NUMBER数据类型转换为VARCHAR 数据类型 同时采用可选的数字格式

  SQL Server则通过STR函数返回数字转换之后的字符数据 不过 该函数不具方便的Format参数

  Oracle查询如下

  SELECT to_char( ) from tab

  SELECT to_char(EXPIRY_DATE DDMONYYYY ) from tab

  以下是SQL Server版本的查询

  SELECT STR( )

  SELECT STR(round( ) )

  SELECT CAST(REPLACE((CONVERT(varchar( )

  EXPIRYDATE )) ) as varchar( ))

  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 ) from dual

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

  Select dateadd(mm getdate())

  数据的减法也不同 以下代码在Oracle中直接

  对数据进行减法操作

  SELECT sysdate add_months(sysdate ) FROM dual

  SQL Server则是这样做的

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

   小结

lishixinzhi/Article/program/Oracle/201311/18850

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式