打印本文 打印本文 关闭窗口 关闭窗口
把Oracle数据库移植到Microsoft SQL Server 7.0
作者:武汉SEO闵涛  文章来源:敏韬网  点击数13397  更新时间:2009/4/22 22:06:51  文章录入:mintao  责任编辑:mintao
转换函数

下面是Oracle支持的转换函数和它们的Microsoft SQL Server等价函数。

函数 Oracle Microsoft SQL Server 数字转换为字符 TO_CHAR CONVERT 字符转换为数字 TO_NUMBER CONVERT 日期转换为字符 TO_CHAR CONVERT 字符转换为日期 TO_DATE CONVERT 16进制转换为2进制 HEX_TO_RAW CONVERT 2进制转换为16进制 RAW_TO_HEX CONVERT

 

其它行级别的函数

下面是Oracle支持的其它行级别的函数以及它们的Microsoft SQL Server等价函数。

函数 Oracle Microsoft SQL Server 返回第一个非空表达式 DECODE COALESCE 当前序列值 CURRVAL N/A 下一个序列值 NEXTVAL N/A 如果exp1 = exp2, 返回null DECODE NULLIF 用户登录账号ID数字 UID SUSER_ID 用户登录名 USER SUSER_NAME 用户数据库ID数字 UID USER_ID 用户数据库名 USER USER_NAME 当前用户 CURRENT_USER CURRENT_USER 用户环境(audit trail) USERENV N/A 在CONNECT BY子句中的级别 LEVEL N/A

 

合计函数

下面是Oracle支持的合计函数和它们的Microsoft SQL Server等价函数。

函数 Oracle Microsoft SQL Server Average AVG AVG Count COUNT COUNT Maximum MAX MAX Minimum MIN MIN Standard deviation STDDEV STDEV or STDEVP Summation SUM SUM Variance VARIANCE VAR or VARP

 

条件测试

Oracle的DECODE语句和Microsoft SQL Server的CASE表达式都执行条件测试。当test_value中的值和后面的任何表达式匹配的时候,相关的值就返回。如果没有找到任何匹配的值,就返回default_value。如果没有指定default_value,在没有匹配的时候,DECODE和CASE都返回一个NULL。下表显示了该语句的语法,同时给出了转换DECODE命令的示例。

Oracle Microsoft SQL  DECODE (test_value,
expression1, value1
[[,expression2, value2] […]]
[,default_value]
)

CREATE VIEW STUDENT_ADMIN.STUDENT_GPA
(SSN, GPA)
AS SELECT SSN, ROUND(AVG
(DECODE(grade
,''''A'''', 4
,''''A+'''', 4.3
,''''A-'''', 3.7
,''''B'''', 3
,''''B+'''', 3.3
,''''B-'''', 2.7
,''''C'''', 2
,''''C+'''', 2.3
,''''C-'''', 1.7
,''''D'''', 1
,''''D+'''', 1.3
,''''D-'''', 0.7
,0)
),2)
FROM STUDENT_ADMIN.GRADE
GROUP BY SSN

CASE input_expression
WHEN when_expression THEN    result_expression
[[WHEN when_expression THEN    result_expression] [...]]
[ELSE else_result_expression]
END

CREATE VIEW STUDENT_ADMIN.STUDENT_GPA
(SSN, GPA)
AS SELECT SSN, ROUND(AVG(CASE grade
WHEN ''''A'''' THEN 4
WHEN ''''A+'''' THEN 4.3
WHEN ''''A-'''' THEN 3.7
WHEN ''''B'''' THEN 3
WHEN ''''B+'''' THEN 3.3
WHEN ''''B-'''' THEN 2.7
WHEN ''''C'''' THEN 2
WHEN ''''C+'''' THEN 2.3
WHEN ''''C-'''' THEN 1.7
WHEN ''''D'''' THEN 1
WHEN ''''D+'''' THEN 1.3
WHEN ''''D-'''' THEN 0.7
ELSE 0
END),2)
FROM STUDENT_ADMIN.GRADE
GROUP BY SSN

 

CASE表达式可以支持用SELECT语句执行布尔测试,这是DECODE命令所不允许的。欲了解关于CASE表达式的详细信息,请参阅SQL Server联机手册。

 

把值转换为不同的数据类型

Microsoft SQL Server的CONVERT和CAST函数都是多目标转换函数。它们提供了相似的功能,把一种数据类型的表达式转换为另一种数据类型的表达式,并且支持多种专门数据的格式。

  • CAST(expression AS data_type)
  • CONVERT (data type[(length)], expression [, style])

CAST是一个SQL-92标准的函数。这些函数执行同Oracle的TO_CHAR、TO_NUMBER、TO_DATE、HEXTORAW以及RAWTOTEXT函数相同的功能。

这里所指的数据类型是任何表达式将被转换成为的系统数据类型。不能使用用户定义的数据类型。长度参数是可选的,该参数用于char、varchar、binary以及varbinary数据类型。允许的最大长度是8000。

转换 Oracle Microsoft SQL Server 字符到数字 TO_NUMBER(''''10'''') CONVERT(numeric, ''''10'''') 数字到字符 TO_CHAR(10) CONVERT(char, 10) 字符到日期 TO_DATE(''''04-JUL-97'''')
TO_DATE(''''04-JUL-1997'''',
''''dd-mon-yyyy'''')
TO_DATE(''''July 4, 1997'''',
''''Month dd, yyyy'''')
CONVERT(datetime, ''''04-JUL-97'''')
CONVERT(datetime, ''''04-JUL-1997'''')
CONVERT(datetime, ''''July 4, 1997'''')
日期到字符 TO_CHAR(sysdate)
TO_CHAR(sysdate, ''''dd mon yyyy'''')
TO_CHAR(sysdate, ''''mm/dd/yyyy'''')
CONVERT(char, GETDATE())
CONVERT(char, GETDATE(), 106)
CONVERT(char, GETDATE(), 101)
16进制到2进制 HEXTORAW(''''1F'''') CONVERT(binary, ''''1F'''') 2进制到16进制 RAWTOHEX
(binary_column)
CONVERT(char, binary_column)

 

请注意字符串是怎样转换为日期的。在Oracle中,缺省的日期格式模型是“DD-MON-YY”如果你使用任何其它格式,你必须提供一个合适的日期格式模型。CONVERT函数自动转换标准日期格式,不需要任何格式模型。

从日期转换到字符串时,CONVERT函数的缺省输出是“dd mon yyyy hh:mm:ss:mmm(24h)”。用一个数字风格代码来格式化输出,使它能输出为其它类型的日期格式模型。欲了解CONVERT函数的详细信息,请参阅SQL Server联机手册。

下表显示了Microsoft SQL Server日期的缺省输出。

Without Century With Century Standard Output - 0 or 100 (*) Default mon dd yyyy hh:miAM (or PM) 1 101 USA mm/dd/yy 2 102 ANSI yy.mm.dd 3 103 British/French dd/mm/yy 4 104 German dd.mm.yy

 << 上一页  [11] [12] [13] [14] [15] [16] [17]  下一页

打印本文 打印本文 关闭窗口 关闭窗口