| >5
105
Italian
dd-mm-yy
6
106
-
dd mon yy
7
107
-
mon dd, yy
8
108
-
hh:mm:ss
-
9 or 109 (*)
Default milliseconds
mon dd yyyy hh:mi:ss:mmm (AM or PM)
10
110
USA
mm-dd-yy
11
111
Japan
yy/mm/dd
12
112
ISO
yymmdd
-
13 or 113 (*)
Europe default
dd mon yyyy hh:mm:ss:mmm(24h)
14
114
-
hh:mi:ss:mmm(24h)
用户定义函数
Oracle PL/SQL函数可以在Oracle SQL语句中使用。在Microsoft SQL Server中一般可以通过其它方式来实现同样的功能。
在SQL Server中可以用表中给出的查询来代替。
Oracle
Microsoft SQL Server
SELECT SSN, FNAME, LNAME, ) TUITION_PAID, TUITION_PAID/GET_SUM_ MAJOR(MAJOR) AS PERCENT_MAJOR FROM STUDENT_ADMIN.STUDENT
SELECT SSN, FNAME, LNAME, TUITION_PAID, TUITION_PAID/SUM_MAJOR AS PERCENT_MAJOR FROM STUDENT_ADMIN.STUDENT, (SELECT MAJOR, SUM(TUITION_PAID) SUM_MAJOR FROM STUDENT_ADMIN.STUDENT GROUP BY MAJOR) SUM_STUDENT WHERE STUDENT.MAJOR = SUM_STUDENT.MAJOR
CREATE OR REPLACE FUNCTION GET_SUM_MAJOR (INMAJOR VARCHAR2) RETURN NUMBER AS SUM_PAID NUMBER; BEGIN SELECT SUM(TUITION_PAID) INTO SUM_PAID FROM STUDENT_ADMIN.STUDENT WHERE MAJOR = INMAJOR; RETURN(SUM_PAID); END GET_SUM_MAJOR;
No CREATE FUNCTION syntax is required; use CREATE PROCEDURE syntax.
比较操作符
Oracle和Microsoft SQL Server的比较操作符几乎是一样的。
算符
Oracle
Microsoft SQL Server
等于
(=)
(=)
大于
(>)
(>)
小于
(<)
(<)
大于或等于
(>=)
(>=)
小于或等于
(<=)
(<=)
不等于
(!=, <>, ^=)
(!=, <>, ^=)
不大于,不小于
N/A
!> , !<
在集合中任意成员中
IN
IN
不在集合中的任何成员中
NOT IN
NOT IN
集合中的任意值
ANY, SOME
ANY, SOME
提交集合中的所有值
!= ALL, <> ALL, < ALL, > ALL, <= ALL, >= ALL, != SOME, <> SOME, < SOME, > SOME, <= SOME, >= SOME
!= ALL, <> ALL, < ALL, > ALL, <= ALL, >= ALL, != SOME, <> SOME, < SOME, > SOME, <= SOME, >= SOME
像模式(Like pattern)
LIKE
LIKE
不像模式(Not like pattern)
NOT LIKE
NOT LIKE
X和y之间的值
BETWEEN x AND y
BETWEEN x AND y
不在x和y之间的值
NOT BETWEEN
NOT BETWEEN
值存在
EXISTS
EXISTS
值不存在
NOT EXISTS
NOT EXISTS
值{为|不为}空
IS NULL, IS NOT NULL
Same. Also = NULL, != NULL for backward compatibility (not recommended).
模式匹配
SQL Server的LIKE关键字提供了有用的通配符搜索功能,这个功能在Oracle中不支持。除了所有的RDBMS都支持的(%)和(_)通配符以外,SQL Server还支持([ ])和([^])通配符。
([ ])字符用来查询在一个范围内的所有单个字符。例如,如果你需要查询包含一个从a到f的字符的数据,你可以这样写:“LIKE ''''[a-f]''''”或者“LIKE ''''[abcdef]''''”。这些附加的通配符的有效性在下表中给出。
Oracle
Microsoft SQL
SELECT * FROM STUDENT_ADMIN.STUDENT WHERE LNAME LIKE ''''A%'''' OR LNAME LIKE ''''B%'''' OR LNAME LIKE ''''C%''''
SELECT * FROM STUDENT_ADMIN.STUDENT WHERE LNAME LIKE ''''[ABC]%''''
[^]通配符用来标记那些不在特定范围内的字符。例如,如果除了a到f以外的所有字符都是可以接受的,你可以这样书写:LIKE ''''[^a - f]''''或者LIKE ''''[^abcdef]''''。
欲了解关于LIKE关键字的详细信息,请参阅SQL Server联机手册。
在比较中使用NULL
尽管Microsoft SQL Server传统上支持SQL-92标准的和一些非标准的NULL行为,但是它还是支持Oracle中的NULL的用法。
为了支持分布式查询,SET ANSI_NULLS必须设定为ON。
在进行连接的时候,SQL Server的SQL Server ODBC驱动程序和OLE DB提供者自动把SET ANSI_NULLS设定为ON。这个设置可以在ODBC数据源、ODBC连接属性、或者是在连接到SQL Server之前在应用程序中设置的OLE DB连接属性中进行配置。在从DB-Library应用程序中连接时,SET ANSI_NULLS缺省为OFF。
当SET ANSI_DEFAULTS为ON时,SET ANSI_NULLS被允许。
欲了解关于NULL用法的详细信息,请参阅SQL Server联机手册。
字串连接
Oracle使用两个管道符号(||)来作为字串连接操作符,SQL Server则使用加号(+)。这个差别要求你在应用程序中做小小的修改。
Oracle
Microsoft SQL
SELECT FNAME||'''' ''''||LNAME AS NAME FROM STUDENT_ADMIN.STUDENT
SELECT FNAME +'''' ''''+ LNAME AS NAME FROM STUDENT_ADMIN.STUDENT
流控制(Control-of-Flow)语言
流控制语言控制SQL语句执行流,语句块以及存储过程。PL/SQL和Transact-SQL提供了多数相同的结构,但是还是有一些语法差别。
关键字
这是两个RDBMS支持的关键字。
语句
Oracle PL/SQL
Microsoft SQL Server Transact-SQL
声明变量
DECLARE
DECLARE
语句块
BEGIN...END;
BEGIN...END
条件处理
IF…THEN, ELSIF…THEN, ELSE ENDIF;
IF…[BEGIN…END] ELSE <condition> [BEGIN…END] ELSE IF <condition> CASE expression
无条件结束
RETURN
RETURN
无条件结束当前程序块后面的语句
EXIT
BREAK
重新开始一个WHILE循环
N/A
CONTINUE
等待指定间隔
<< 上一页 [11] [12] [13] [14] [15] [16] [17] 下一页 |