ORACLE和SQL语法区别归纳(1)

上传人:熏** 文档编号:109795067 上传时间:2022-06-17 格式:DOC 页数:12 大小:54KB
收藏 版权申诉 举报 下载
ORACLE和SQL语法区别归纳(1)_第1页
第1页 / 共12页
ORACLE和SQL语法区别归纳(1)_第2页
第2页 / 共12页
ORACLE和SQL语法区别归纳(1)_第3页
第3页 / 共12页
资源描述:

《ORACLE和SQL语法区别归纳(1)》由会员分享,可在线阅读,更多相关《ORACLE和SQL语法区别归纳(1)(12页珍藏版)》请在装配图网上搜索。

1、ORACLE和SQL语法区别归纳(1)IT猫扑技术2009-12-08 17:08来源:作者:IT猫扑网整理收集点击:1834次字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle 里面最大度为2kb,SQLServer里面最大长度为8kb变长字符数据类型 VARCHAR2 VARCHAR Oracle 里面最大长度为 4kb,SQLServer里面最大长度为8kb根据字符集而定的固定长度字符串 NCHAR NCHAR 前者最大长度2kb后者最大长度4kb根据字符集而定的可变长度字符串 NVARCHAR2 NVARCHAR 二者最大长度都为4kb日期和时间数据类型 DATE 有

2、Datetime和Smalldatetime两种 在oracle 里面格式为DMY在SQLSerser里面可以调节,默认的为MDY数字类型 NUMBER(P,S) NUMERICP(,S) Oracle 里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。数字类型 DECIMAL(P,S) DECIMALP(,S) Oracle 里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。整数类型 INTEGER INT 同为整数类型,存储大小

3、都为4个字节浮点数类型 FLOAT FLOAT实数类型 REAL REALORACLE 内部函数大全以及与SQLSERVER的区别:下面是Oracle 支持的字符函数和它们的Microsoft SQL Server等价函数。函数 Oracle Microsoft SQL Server把字符转换为ASCII :ASCII ASCII字串连接: CONCAT -(expression + expression)把ASCII转换为字符 CHR, CHAR返回字符串中的开始字符(左起) INSTR ,-CHARINDEX把字符转换为小写 LOWER -LOWER把字符转换为大写 UPPER- UPPE

4、R填充字符串的左边 LPAD -N/A清除开始的空白 LTRIM-LTRIM清除尾部的空白 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- DATELENGTH or LEN

5、列表中最大的字符串 GREATEST- N/A列表中最小的字符串 LEAST -N/A如果为NULL则转换字串 NVL- ISNULL日期函数下面是Oracle 支持的日期函数和它们的Microsoft SQL Server等价函数。函数 Oracle -Microsoft SQL Server日期相加 (date column +/- value) or ADD_MONTHS -DATEADD两个日期的差 (date column +/- value) or MONTHS_BETWEEN -DATEDIFF当前日期和时间 SYSDATE -GETDATE()一个月的最后一天 LAST_DAY

6、 -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 支持的转换函数和它们的Microsoft SQL Server等价函数。函数 Oracle -Microsoft SQL Server数字转换为字符 TO_CHAR -CONVE

7、RT字符转换为数字 TO_NUMBER -CONVERT日期转换为字符 TO_CHAR -CONVERT字符转换为日期 TO_DATE CONVERT16进制转换为2进制 HEX_TO_RAW -CONVERT2进制转换为16进制 RAW_TO_HEX -CONVERT其它行级别的函数下面是Oracle 支持的其它行级别的函数以及它们的Microsoft SQL Server等价函数。函数 Oracle -Microsoft SQL Server返回第一个非空表达式 DECODE -COALESCE当前序列值 CURRVAL -N/A下一个序列值 NEXTVAL -N/A用户登录账号ID数字

8、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 ServerAverage AVG - AVGCount COUNT -COUNTMaximum MAX - M

9、AXMinimum MIN -MINStandard deviation STDDEV -STDEV or STDEVPSummation SUM - SUMVariance VARIANCE -VAR or VARP条件测试Oracle 的DECODE语句和Microsoft SQL Server的CASE表达式都执行条件测试。当test_value中的值和后面的任何表达式匹配的时候,相关的值就返回。如果没有找到任何匹配的值,就返回default_value。如果没有指定default_value,在没有匹配的时候,DECODE和CASE都返回一个NULL。下表显示了该语句的语法,同时给出了

10、转换DECODE命令的示例。Oracle Microsoft SQLDECODE (test_value,expression1, value1,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.GRADEGROUP BY SSNCAS

11、E input_expressionWHEN when_expression THEN result_expressionELSE else_result_expressionENDCREATE VIEW STUDENT_ADMIN.STUDENT_GPA(SSN, GPA)AS SELECT SSN, ROUND(AVG(CASE gradeWHEN A THEN 4WHEN A+ THEN 4.3WHEN A- THEN 3.7WHEN B THEN 3WHEN B+ THEN 3.3WHEN B- THEN 2.7WHEN C THEN 2WHEN C+ THEN 2.3WHEN C-

12、THEN 1.7WHEN D THEN 1WHEN D+ THEN 1.3WHEN D- THEN 0.7ELSE 0END),2)FROM STUDENT_ADMIN.GRADEGROUP BY SSNCASE表达式可以支持用SELECT语句执行布尔测试,这是DECODE命令所不允许的。欲了解关于CASE表达式的详细信息,请参阅SQL Server联机手册。把值转换为不同的数据类型Microsoft SQL Server的CONVERT和CAST函数都是多目标转换函数。它们提供了相似的功能,把一种数据类型的表达式转换为另一种数据类型的表达式,并且支持多种专门数据的格式。CAST(expres

13、sion 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_NU

14、MBER(?) -CONVERT(numeric, ?)数字到字符 TO_CHAR(10) -CONVERT(char, 10)字符到日期 TO_DATE(?-JUL-97)TO_DATE(?-JUL-1997,dd-mon-yyyy)TO_DATE(July 4, 1997, Month dd, yyyy) -CONVERT(datetime, ?-JUL-97)CONVERT(datetime, ?-JUL-1997)CONVERT(datetime, July 4, 1997)日期到字符 TO_CHAR(sysdate)TO_CHAR(sysdate, dd mon yyyy)TO_CH

15、AR(sysdate, mm/dd/yyyy) -CONVERT(char, GETDATE()CONVERT(char, GETDATE(), 106)CONVERT(char, GETDATE(), 101)16进制到2进制 HEXTORAW(?F)- CONVERT(binary, ?F)2进制到16进制 RAWTOHEX(binary_column) -CONVERT(char, binary_column)请注意字符串是怎样转换为日期的。在Oracle 中,缺省的日期格式模型是“DD- MON-YY”如果你使用任何其它格式,你必须提供一个合适的日期格式模型。CONVERT函数自动转换

16、标准日期格式,不需要任何格式模型。从日期转换到字符串时,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/yy2 102 ANSI

17、 yy.mm.dd3 103 British/French dd/mm/yy4 104 German dd.mm.yy5 105 Italian dd-mm-yy6 106 - dd mon yy7 107 - mon dd, yy8 108 - hh:mm:ss- 9 or 109 (*) Default milliseconds mon dd yyyy hh:mi:ss:mmm (AM or PM)10 110 USA mm-dd-yy11 111 Japan yy/mm/dd12 112 ISO yymmdd- 13 or 113 (*) Europe default dd mon yy

18、yy 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 ServerSELECT SSN, FNAME, LNAME, ) TUITION_PAID,TUITION_PAID/GET_SUM_MAJOR(MAJOR)AS PERCENT_MAJORFROM STUDENT_ADMIN.STUDENT S

19、ELECT SSN, FNAME, LNAME, TUITION_PAID, TUITION_PAID/SUM_MAJOR AS PERCENT_MAJORFROM STUDENT_ADMIN.STUDENT,(SELECT MAJOR, SUM(TUITION_PAID) SUM_MAJORFROM STUDENT_ADMIN.STUDENTGROUP BY MAJOR) SUM_STUDENTWHERE STUDENT.MAJOR = SUM_STUDENT.MAJORCREATE OR REPLACE FUNCTION GET_SUM_MAJOR(INMAJOR VARCHAR2) RE

20、TURN NUMBERAS SUM_PAID NUMBER;BEGINSELECT SUM(TUITION_PAID) INTO SUM_PAIDFROM STUDENT_ADMIN.STUDENTWHERE 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

21、等于 (=) (=)大于 () ()小于 () (=) (=)小于或等于 (=) (=)不等于 (!=, , =) (!=, , =)不大于,不小于 N/A ! , !在集合中任意成员中 IN IN不在集合中的任何成员中 NOT IN NOT IN集合中的任意值 ANY, SOME ANY, SOME提交集合中的所有值 != ALL, ALL, ALL, = ALL, !=SOME, SOME,SOME,=SOME != ALL, ALL, ALL, = ALL, !=SOME, SOME,SOME,=SOME像模式(Like pattern) LIKE LIKE不像模式(Not like p

22、attern) NOT LIKE NOT LIKEX和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

23、都支持的(%)和(_)通配符以外,SQL Server还支持( )和()通配符。( )字符用来查询在一个范围内的所有单个字符。例如,如果你需要查询包含一个从a到f的字符的数据,你可以这样写:“LIKE a-f”或者“LIKE abcdef”。这些附加的通配符的有效性在下表中给出。Oracle Microsoft SQLSELECT * FROM STUDENT_ADMIN.STUDENTWHERE LNAME LIKE A%OR LNAME LIKE B%OR LNAME LIKE C% SELECT * FROM STUDENT_ADMIN.STUDENTWHERE LNAME LIKE A

24、BC%通配符用来标记那些不在特定范围内的字符。例如,如果除了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联机手册。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!