zoukankan      html  css  js  c++  java
  • MSSQL与PLSQL的区别

    更多请参考: http://www.bristle.com/Tips/SQL.htm#Oracle%20Tips
    黄色背景为经常用并且容易用错的条目

    语法结构

    Description Oracle MS SQL Server
    Left Outer Join WHERE column1 = column2(+) FROM table1 LEFT OUTER JOIN table2 ON table1.column1 = table2.column2

    Note:  The following syntax is also supported, but is no longer recommended:
    WHERE column1 *= column2
    Right Outer Join WHERE column1(+) = column2 FROM table1 RIGHT OUTER JOIN table2 ON table1.column1 = table2.column2

    Note:  The following syntax is also supported, but is no longer recommended:
    WHERE column1 =* column2
    SELECT data into a table CREATE TABLE AS SELECT ... SELECT ... INTO
    Intersection of 2 SELECTS SELECT ... INTERSECT SELECT ... SELECT ... WHERE EXISTS (SELECT ...)
    INSERT into a JOIN INSERT INTO SELECT ... Create a VIEW and INSERT INTO it.
    UPDATE data in a JOIN UPDATE SELECT... Create a VIEW and INSERT INTO it.
    UPDATE one table based on criteria in another table <not supported> UPDATE table FROM ...
    DELETE rows from one table based on criteria in another table <not supported> DELETE FROM table FROM ...
    DROP a column from a table <not supported until Oracle 8i> ALTER TABLE table_name DROP COLUMN column_name
    Readonly VIEW CREATE VIEW ... WITH READONLY GRANT SELECT ...
    Save point SAVEPOINT SAVE TRANSACTION
    Declaring a local variable DECLARE varname type; DECLARE @varname type
    Assigning to a variable varname := value
    SELECT value INTO varname
    SET @varname = value
    SELECT @varname = value
    Assigning to a variable from a cursor FETCH cursorname INTO varname FETCH NEXT FROM cursorname INTO varname
    Declaring a cursor CURSOR curname (params)
    IS SELECT ...;
    DECLARE curname CURSOR FOR SELECT ...
    If statement IF ... THEN
    ELSIF ... THEN
    ELSE
    ENDIF
    IF ...
    BEGIN ... END
    ELSE BEGIN ... END
    While loop WHILE ... LOOP
    END LOOP
    WHILE ...
    BEGIN ... END
    Other loops FOR ... END LOOP
    LOOP ... END LOOP
    <not supported>
    Loop exit EXIT, EXIT WHEN BREAK, CONTINUE

    数据类型

    Data Type In VB6 Oracle MS SQL Server
    Fixed Length String String CHAR(n)
    - limit 2KB
    CHAR(n), CHARACTER(n)
    - limit 255 (6.5)
    - limit 8KB (7.0)
    Variable Length String String VARCHAR2(n), VARCHAR(n)
    - limit 4KB in a column
    - limit 32KB in a variable
    - VARCHAR is obsolete
    VARCHAR(n), CHAR VARYING(n), CHARACTER VARYING(n)
    - limit 255 (6.5)
    - limit 8KB (7.0)
    Integer Integer INTEGER, INTEGER(n), SMALLINT INTEGER (4 bytes),
    INT (4 bytes),
    SMALLINT (2 bytes),
    TINYINT (1 byte),
    BIT (1 bit)
    Fixed Point Long/Currency NUMBER, NUMBER(n), NUMBER(n,d),
    FLOAT, FLOAT(n), FLOAT(n,d)
    NUMERIC, NUMERIC(n), NUMERIC(n,d),
    DECIMAL, DECIMAL(n), DECIMAL(n,d),
    DEC, DEC(n), DEC(n,d),
    MONEY, SMALLMONEY
    Floating Point Currency DECIMAL FLOAT, FLOAT(n), DOUBLE PRECISION,
    REAL,
    Date Date DATE DATETIME, SMALLDATETIME, TIMESTAMP
    - TIMESTAMP auto-updated
    Row Identifier <none> implicit ROWID column (use an IDENTITY column)

    常用函数


    Description Oracle MS SQL Server
    Modulus MOD %
    Translate NULL to n NVL ISNULL
    Return NULL if two values are equal DECODE NULLIF
    String concatenation CONCAT(str1,str2) str1 + str2
    Convert ASCII to char CHR CHAR
    Find string in string INSTR CHARINDEX
    Find pattern in string INSTR PATINDEX
    String length LENGTH DATALENGTH
    Trim leading or trailing chars other than blanks LTRIM(str,chars),
    RTRIM(str,chars)
    <none>
    Replace chars in string REPLACE STUFF
    Convert number to string TO_CHAR STR, CAST
    Convert string to number TO_NUMBER CAST
    Get substring from string SUBSTR SUBSTRING
    Char for char translation in string TRANSLATE <none>
    Date addition ADD_MONTH or + DATEADD
    Convert date to string TO_CHAR DATENAME, CONVERT
    Convert string to date TO_DATE CAST
    Convert date to number TO_NUMBER(TO_CHAR(d)) DATEPART
    Date round ROUND CONVERT
    Date truncate TRUNC CONVERT
    Current date SYSDATE GETDATE
    If statement in an expression DECODE
    ex)DECODE (expression,
    search_1,result_1,...,
    search_n,result_n)
    CASE ... WHEN
    or COALESCE
    ex)SELECT
         CASE expression
              WHEN serch_1
              THEN result_1
              ....
              WHEN search_n
              THEN  result_n  

    ORACLE 与SQL SERVER间的转换

       如需在Oracle 数据库与Sql Server 数据库之间进行转换需要做好以下工作:

      1)保证所有的 SELECT, INSERT, UPDATE, and DELETE 语句的语法是正确的,如果有什么不同需要做一定的更改。
    2)改变所有ORACLE中的 outer joins 为SQL SERVER支持的 SQL-92 standard outer join 标准
    3)将Oracle functions 与SQL Server functions 进行转换。
    4)检查所有的操作符.。
    5)将ORACLE的“||” 字串连接操作符转换为SQL SERVER的 “+”字串连接操作符。
    6)将ORACLE的 PL/SQL 程序转换为SQL SERVER的TransactSQL 程序。
    7)修改所有的ORACLE的 PL/SQL 游标为没有游标的SELECT 语句或者是SQL SERVER的 TransactSQL 游标。
    8)将ORACLE的PL/SQL procedures, functions, and packages 与SQL SERVER的TransactSQL procedures进行转换。
    9)将ORACLE的 PL/SQL triggers与SQL SERVER的TransactSQL triggers进行转换。
    10)用 SET SHOWPLAN 语句来调整你的查询的性能。


  • 相关阅读:
    python+opencv实现图像缩放
    vim 常用指令-持续更新
    python实现简单的SVM
    linux查看当前目录下,各文件夹大小
    python解析json文件信息到csv中
    根据小图文件名在原图画框
    BZOJ1079: [SCOI2008]着色方案 (记忆化搜索)
    BZOJ1044: [HAOI2008]木棍分割 (二分 + DP)
    gym100825G. Tray Bien(轮廓线DP)
    BZOJ1237: [SCOI2008]配对
  • 原文地址:https://www.cnblogs.com/sekihin/p/1076681.html
  • Copyright © 2011-2022 走看看
    Creative Commons License 本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。