• Oracle和SQL SERVER在SQL语句上的差别


    Oracle与Sql server都遵循SQL-92标准:http://owen.sj.ca.us/rkowen/howto/sql92F.html,但是也有一些不同之处,差别如下:

    1. Oracle中表名,字段名,存储过程名,变量名不能超过30个字符串长度。

    2. Oracle中不支持Top 语法。使用whererownum < n 代替。但需要注意如果在Top前有排序的操作,则需要先排序在利用rownum取得。

    3. Oracle中光标的使用与SqlServer中有挺大差别,主要是在循环控制方面不一致。

    4. 在 Oracle中如果某列是Date类型,那么它默认的格式是yyyy-MM-dd,如果使用where colDate = ‘2005-06-08 17:14:57’就会出错,‘2005-06-08’可以。如果此时需要精确比较时间(小时,分,秒),可以采用下列方 法:TO_DATE('2005-6-8 17:14:57','yyyy-mm-dd hh24:mi:ss')。由于Oracle和SQLServer在DateTime上对SQL标准的拓展实现方式不同,因此不能用同一个SQL实现。

    5. Oracle 中的TimeStamp(时间戳)与SqlServer中的差别很大。SqlServer中的TimeStamp是二进制格式存储在数据库中,可以将 DataSet中的这个字段类型设定为base64Binary类型。Oracle中的TimeStamp是时间格式存储的。因此,无法用同一个 DataSet既装载SqlServer的TimeStamp,有装载Oracle的TimeStamp.由于在应用程序中很少用到这个值,因此可以不检 索这个字段。

    6. Oracle中的TimeStamp不能像SqlServer在传入数据的时候自动填充,可以设定默认值systimestamp来实现类似功能。

    7. Oracle中没有Boolean的字段类型,可以用intger或者char代替SqlServer中的bit类型。

    8. Oracle 中会将””空字符串当多NULL处理,也就是说,当应用程序往数据库中插入一个空字符串时,实际数据库会尝试插入一个NULL。如果这个字段是 NOTNULL类型,那么就会出错,这种情况下可以用别的默认值代替空字符串。当从SqlServer导入数据到Oracle的时候,在NOTNULL列 上的空字符串会导致导出操作失败。此时可以在导出向导中手工修改SQL脚本,将空字符串设定成一个特殊值。

    9. Oracle中不支持,SELECT . . INTO创建新表,要用CREATE TABLE 表名AS SELECT 语句 ,创建新表。

    10. 在Oracle中连接字符串用 ‘||’ 或CONCAT(COL1,COL2)函数,不能使用‘+’

    11. 统配符 [],[^] ,Oracle好像也不支持。

    12. 可以使用 &变量句 当变量使用,在执行时会要求输入 变量名对应的值

    oracle通配符,运算符的使用
      用于where比较条件的有:
      等于:=、<、<=、>、>=、<>
      包含:in、not in exists、not exists
      范围:between...and、not between....and
      匹配测试:like、not like
      Null测试:is null、is not null
      布尔链接:and、or、not
      通配符:
      在where子句中,通配符可与like条件一起使用。在Oracle中:
      %(百分号): 用来表示任意数量的字符,或者可能根本没有字符。
      _(下划线): 表示确切的未知字符。
      ?(问号): 用来表示确切的未知字符。
      #(井号): 用来表示确切的阿拉伯数字,0到9。
      [a-d](方括号):用来表示字符范围,在这里是从a到d。
      单引号('):在Oracle中,应该只使用单引号将文本和字符和日期括起来,不能使用引号(包括单双引号)将数字括起来。
      双引号("):在Oracle中,单双引号含义不同。双引号被用来将包含特定字符或者空格的列别名括起来。双引号还被用来将文本放入日期格式。
      撇号('):在Oracle中,撇号也可以写成彼此相邻的两个单引号。为了在供应商名字中间查找所有带撇号的供应商名字,可以这样编写代码:
      select * from l_suppliers where supplier_name like '%''%'
       &符号:在Oracle中,&符号常用来指出一个变量。例如,&fox是一个变量,稍微有点不同的一种&& fox。每当&fox出现在Oracle脚本中时,都会要求您为它提供一个值。而使用&&fox,您只需要在& &fox第一次出现时为它提供变量值。如果想将&符号作为普通的符号使用,则应该关闭这个特性。要想关闭这个特性,可以运行以下的命令: set define off ,这是一个SQLplus命令,不是一个SQL命令。SQLplus设置了SQL在Oracle中运行的环境。
      双竖线(||):Oracle使用双竖线表示字符串连接函数。
      星号(*):select *意味着选择所有的列,count(*)意味着计算所有的行,表示通配符时,表示0个或任意多个字符。
      正斜杠(/):在Oracle中,用来终止SQL语句。更准确的说,是表示了“运行现在位于缓冲区的SQL代码”。正斜杠也用作分隔项。
      多行注释:/*......*/。
      不等于:有多种表达方式:!=、^=、<>、not xxx=yyy、not(xxx=yyy)

  • 相关阅读:
    C++基于范围的for循环性能测试(针对std::vector)
    C++ 中std::function 、std::bind的使用和lambda的使用
    C++ auto 关键字的使用
    C++内存管理解析
    c++类内存分布解析
    Windows上编译GRPC
    在从1到n的正数中1出现的次数
    POJ 1009 解题报告
    Cheat Engine 笔记
    Cheat Engine 教程 Step 9
  • 原文地址:https://www.cnblogs.com/fery/p/4655646.html
Copyright © 2020-2023  润新知