ORACLE和SQL语法区别归纳

  • 格式:docx
  • 大小:33.52 KB
  • 文档页数:21

ORACLE和SQL语法区别归纳数据类型比较类型名称OracleSQLServer比较字符数据类型CHAR CHAR都是固定长度字符资料但oracle里面最大度为2kb,SQLServer 里面最大长度为8kb变长字符数据类型VARCHAR2 VARCHAR Oracle里面最大长度为4kb,SQLServer里面最大长度为8kb根据字符集而定的固定长度字符串NCHAR NCHAR前者最大长度2kb后者最大长度4kb 根据字符集而定的可变长度字符串NVARCHAR2 NVARCHAR 二者最大长度都为4kb日期和时间数据类型DATE 有Datetime和Smalldatetime两种在oracle里面格式为DMY 在SQLSerser里面可以调节,默认的为MDY数字类型NUMBER(P,S) NUMERIC[P(,S)] Oracle里面p代表小数点左面的位数,s代表小数点右面的位数。

而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。

数字类型DECIMAL(P,S) DECIMAL[P(,S)] Oracle里面p代表小数点左面的位数,s代表小数点右面的位数。

而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。

整数类型INTEGER INT 同为整数类型,存储大小都为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-------------------- UPPER填充字符串的左边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列表中最大的字符串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 --------------------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 --------------------CONVERT字符转换为数字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数字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 -------------------- MAXMinimum 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。

下表显示了该语句的语法,同时给出了转换DECODE命令的示例。

Oracle Microsoft SQLDECODE (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.GRADEGROUP BY SSNCASE input_expressionWHEN when_expression THEN result_expression[ELSE else_result_expression]ENDCREATE 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-' THEN 1.7WHEN 'D' THEN 1WHEN 'D+' THEN 1.3WHEN 'D-' THEN 0.7ELSE 0END),2)FROM STUDENT_ADMIN.GRADEGROUP BY SSNCASE表达式可以支持用SELECT语句执行布尔测试,这是DECODE命令所不允许的。