ORACLE和SQL语法区别归纳2Word格式.docx

上传人:b****6 文档编号:19087572 上传时间:2023-01-03 格式:DOCX 页数:20 大小:27.39KB
下载 相关 举报
ORACLE和SQL语法区别归纳2Word格式.docx_第1页
第1页 / 共20页
ORACLE和SQL语法区别归纳2Word格式.docx_第2页
第2页 / 共20页
ORACLE和SQL语法区别归纳2Word格式.docx_第3页
第3页 / 共20页
ORACLE和SQL语法区别归纳2Word格式.docx_第4页
第4页 / 共20页
ORACLE和SQL语法区别归纳2Word格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

ORACLE和SQL语法区别归纳2Word格式.docx

《ORACLE和SQL语法区别归纳2Word格式.docx》由会员分享,可在线阅读,更多相关《ORACLE和SQL语法区别归纳2Word格式.docx(20页珍藏版)》请在冰豆网上搜索。

ORACLE和SQL语法区别归纳2Word格式.docx

清除尾部的空白RTRIM--------------------RTRIM

字符串中的起始模式(pattern)INSTR--------------------PATINDEX

多次重复字符串RPAD--------------------REPLICATE

字符串的语音表示SOUNDEX--------------------SOUNDEX

重复空格的字串RPAD--------------------SPACE

从数字数据转换为字符数据TO_CHAR--------------------STR

子串SUBSTR--------------------SUBSTRING

替换字符REPLACE--------------------STUFF

将字串中的每个词首字母大写INITCAP--------------------N/A

翻译字符串TRANSLATE--------------------N/A

字符串长度LENGTH--------------------DATELENGTHorLEN

列表中最大的字符串GREATEST--------------------N/A

列表中最小的字符串LEAST--------------------N/A

如果为NULL则转换字串NVL--------------------ISNULL

 

日期函数

下面是Oracle支持的日期函数和它们的MicrosoftSQLServer等价函数。

函数Oracle--------------------MicrosoftSQL Server

日期相加(datecolumn+/-value)orADD_MONTHS--------------------DATEADD

两个日期的差(datecolumn+/-value)orMONTHS_BETWEEN--------------------DATEDIFF

当前日期和时间SYSDATE--------------------GETDATE()

一个月的最后一天LAST_DAY--------------------N/A

时区转换NEW_TIME--------------------N/A

日期后的第一个周日NEXT_DAY--------------------N/A

代表日期的字符串TO_CHAR--------------------DATENAME

代表日期的整数TO_NUMBER(TO_CHAR))--------------------DATEPART

日期舍入ROUND--------------------CONVERT

日期截断TRUNC--------------------CONVERT

字符串转换为日期TO_DATE--------------------CONVERT

如果为NULL则转换日期NVL--------------------ISNULL

转换函数

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

数字转换为字符TO_CHAR--------------------CONVERT

字符转换为数字TO_NUMBER--------------------CONVERT

日期转换为字符TO_CHAR--------------------CONVERT

字符转换为日期TO_DATECONVERT

16进制转换为2进制HEX_TO_RAW--------------------CONVERT

2进制转换为16进制RAW_TO_HEX--------------------CONVERT

其它行级别的函数

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

返回第一个非空表达式DECODE-------------------------------------COALESCE

当前序列值CURRVAL--------------------N/A

下一个序列值NEXTVAL--------------------N/A

用户登录账号ID数字UID--------------------SUSER_ID

用户登录名USER--------------------SUSER_NAME

用户数据库ID数字UID--------------------USER_ID

用户数据库名USER--------------------USER_NAME

当前用户CURRENT_USER--------------------CURRENT_USER

用户环境(audittrail)USERENV--------------------N/A

在CONNECTBY子句中的级别LEVEL--------------------N/A

合计函数

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

AverageAVG--------------------AVG

CountCOUNT--------------------COUNT

MaximumMAX--------------------MAX

MinimumMIN--------------------MIN

StandarddeviationSTDDEV--------------------STDEVorSTDEVP

SummationSUM--------------------SUM

VarianceVARIANCE--------------------VARorVARP

条件测试

Oracle的DECODE语句和MicrosoftSQLServer的CASE表达式都执行条件测试。

当test_value中的值和后面的任何表达式匹配的时候,相关的值就返回。

如果没有找到任何匹配的值,就返回default_value。

如果没有指定default_value,在没有匹配的时候,DECODE和CASE都返回一个NULL。

下表显示了该语句的语法,

同时给出了转换DECODE命令的示例。

OracleMicrosoftSQL 

DECODE(test_value,

expression1,value1

<

expression2,value2][…>

[,default_value]

CREATEVIEWSTUDENT_ADMIN.STUDENT_GPA

(SSN,GPA)

ASSELECTSSN,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)

FROMSTUDENT_ADMIN.GRADE

GROUPBYSSN

CASEinput_expression

WHENwhen_expressionTHEN   result_expression

[ELSEelse_result_expression]

END

ASSELECTSSN,ROUND(AVG(CASEgrade

WHEN'

THEN4

THEN4.3

THEN3.7

THEN3

THEN3.3

THEN2.7

THEN2

THEN2.3

THEN1.7

THEN1

THEN1.3

THEN0.7

ELSE0

END),2)

CASE表达式可以支持用SELECT语句执行布尔测试,这是DECODE命令所不允许的。

欲了解关于CASE表达式的详细信息,

请参阅SQLServer联机手册。

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

MicrosoftSQLServer的CONVERT和CAST函数都是多目标转换函数。

它们提供了相似的功能,

把一种数据类型的表达式转换为另一种数据类型的表达式,并且支持多种专门数据的格式。

CAST(expressionASdata_type)

CONVERT(datatype[(length)],expression[,style])

CAST是一个SQL-92标准的函数。

这些函数执行同Oracle的TO_CHAR、TO_NUMBER、TO_DATE、HEXTORAW以及RAWTOTEXT函数相同的功能。

这里所指的数据类型是任何表达式将被转换成为的系统数据类型。

不能使用用户定义的数据类型。

长度参数是可选的,

该参数用于char、varchar、binary以及varbinary数据类型。

允许的最大长度是8000。

转换OracleMicrosoftSQL Server

字符到数字TO_NUMBER(?

'

)--------------------CONVERT(numeric,?

数字到字符TO_CHAR(10)--------------------CONVERT(char,10)

字符到日期TO_DATE(?

-JUL-97'

TO_DATE(?

-JUL-1997'

dd-mon-yyyy'

TO_DATE('

July4,1997'

'

Monthdd,yyyy'

)--------------------CONVERT(datetime,?

CONVERT(datetime,?

CONVERT(datetime,'

日期到字符TO_CHAR(sysdate)

TO_CHAR(sysdate,'

ddmonyyyy'

mm/dd/yyyy'

)--------------------CONVERT(char,GETDATE())

CONVERT(char,GETDATE(),106)

CONVERT(char,GETDATE(),101)

16进制到2进制HEXTORAW(?

F'

)--------------------CONVERT(binary,?

2进制到16进制RAWTOHEX(binary_column)--------------------CONVERT(char,binary_column)

请注意字符串是怎样转换为日期的。

在Oracle中,缺省的日期格式模型是“DD-MON-YY”如果你使用任何其它格式,

你必须提供一个合适的日期格式模型。

CONVERT函数自动转换标准日期格式,不需要任何格式模型。

从日期转换到字符串时,CONVERT函数的缺省输出是“ddmonyyyyhh:

mm:

ss:

mmm(24h)”。

用一个数字风格代码来格式化输出,使它能输出为其它类型的日期格式模型。

欲了解CONVERT函数的详细信息,请参阅SQLServer联机手册。

下表显示了MicrosoftSQLServer日期的缺省输出。

WithoutCenturyWithCenturyStandardOutput

-0or100(*)Defaultmonddyyyyhh:

miAM(orPM)

1101USAmm/dd/yy

2102ANSIyy.mm.dd

3103British/Frenchdd/mm/yy

4104Germandd.mm.yy

5105Italiandd-mm-yy

6106-ddmonyy

7107-mondd,yy

8108-hh:

ss

-9or109(*)Defaultmillisecondsmonddyyyyhh:

mi:

mmm(AMorPM)

10110USAmm-dd-yy

11111Japanyy/mm/dd

12112ISOyymmdd

-13or113(*)Europedefaultddmonyyyyhh:

mmm(24h)

14114-hh:

用户定义函数

OraclePL/SQL函数可以在OracleSQL语句中使用。

在MicrosoftSQLServer中一般可以通过其它方式来实现同样的功能。

在SQLServer中可以用表中给出的查询来代替。

OracleMicrosoftSQL Server

SELECTSSN,FNAME,LNAME,)   TUITION_PAID,

   TUITION_PAID/GET_SUM_

   MAJOR(MAJOR)

   ASPERCENT_MAJOR

FROMSTUDENT_ADMIN.STUDENTSELECTSSN,FNAME,LNAME,TUITION_PAID,TUITION_PAID/SUM_MAJORASPERCENT_MAJOR

FROMSTUDENT_ADMIN.STUDENT,

  (SELECTMAJOR,     SUM(TUITION_PAID)SUM_MAJOR

  FROMSTUDENT_ADMIN.STUDENT

  GROUPBYMAJOR)SUM_STUDENT

WHERESTUDENT.MAJOR=     SUM_STUDENT.MAJOR

CREATEORREPLACEFUNCTIONGET_SUM_MAJOR

(INMAJORVARCHAR2)RETURNNUMBER

ASSUM_PAIDNUMBER;

BEGIN

SELECTSUM(TUITION_PAID)INTO   SUM_PAID

FROMSTUDENT_ADMIN.STUDENT

WHEREMAJOR=INMAJOR;

RETURN(SUM_PAID);

ENDGET_SUM_MAJOR;

NoCREATEFUNCTIONsyntaxisrequired;

useCREATEPROCEDUREsyntax.

比较操作符

Oracle和MicrosoftSQLServer的比较操作符几乎是一样的。

算符OracleMicrosoftSQL Server

等于(=)(=)

大于(>

)(>

小于(<

)(<

大于或等于(>

=)(>

=)

小于或等于(<

=)(<

不等于(!

=,<

>

^=)(!

^=)

不大于,不小于N/A!

!

在集合中任意成员中ININ

不在集合中的任何成员中NOTINNOTIN

集合中的任意值ANY,SOMEANY,SOME

提交集合中的所有值!

=ALL,<

ALL,<

ALL,

=ALL,>

=ALL,!

= SOME,<

 SOME,

 SOME,>

= SOME,>

= SOME!

= SOME

像模式(Likepattern)LIKELIKE

不像模式(Notlikepattern)NOTLIKENOTLIKE

X和y之间的值BETWEENxANDyBETWEENxANDy

不在x和y之间的值NOTBETWEENNOTBETWEEN

值存在EXISTSEXISTS

值不存在NOTEXISTSNOTEXISTS

值{为|不为}空ISNULL,ISNOTNULLSame.Also=NULL,

!

= NULLforbackwardcompatibility(notrecommended).

模式匹配

SQLServer的LIKE关键字提供了有用的通配符搜索功能,这个功能在Oracle中不支持

除了所有的RDBMS都支持的(%)和(_)通配符以外,SQLServer还支持([])和([^])通配符。

([])字符用来查询在一个范围内的所有单个字符。

例如,如果你需要查询包含一个从a到f的字符的数据,

你可以这样写:

“LIKE'

[a-f]'

”或者“LIKE'

[abcdef]'

”。

这些附加的通配符的有效性在下表中给出。

SELECT*FROMSTUDENT_ADMIN.STUDENT

WHERELNAMELIKE'

A%'

ORLNAMELIKE'

B%'

C%'

SELECT*FROMSTUDENT_ADMIN.STUDENT

[ABC]%'

[^]通配符用来标记那些不在特定范围内的字符。

例如,如果除了a到f以外的所有字符都是可以接受的,你可以这样书写:

LIKE'

[^a-f]'

或者LIKE'

[^abcdef]'

欲了解关于LIKE关键字的详细信息,请参阅SQLServer联机手册。

在比较中使用NULL

尽管MicrosoftSQLServer传统上支持SQL-92标准的和一些非标准的NULL行为,但是它还是支持Oracle中的NULL的用法。

为了支持分布式查询,SETANSI_NULLS必须设定为ON。

在进行连接的时候,SQLServer的SQLServerODBC驱动程序和OLEDB提供者自动把SETANSI_NULLS设定为ON。

这个设置可以在ODBC数据源、ODBC连接属性、或者是在连接到SQLServer之前在应用程序中设置的OLEDB连接属性中进行配置。

在从DB-Library应用程序中连接时,SETANSI_NULLS缺省为OFF。

当SETANSI_DEFAULTS为ON时,SETANSI_NULLS被允许。

欲了解关于NULL用法的详细信息,请参阅SQLServer联机手册。

字串连接

Oracle使用两个管道符号(||)来作为字串连接操作符,SQLServer则使用加号(+)。

这个差别要求你在应用程序中做小小的修改。

OracleMicr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1