SQLServer Oracle MySQL的区别

简介

SqlServser:Microsoft产品,通过良好的ODBC接口可以将Access、FoxPro、Excel转换为SQLServer数据库。

Oracle:运行于所有主流平台,完全支持所有的工业标准(ODBC、JDBC、OCI),采用完全开放策略。Oracle并行服务器通过使一组结点共享同一簇中的工作扩展Windows NT的能力,提高可利用性和高伸缩性的簇的解决方案。支持大并发,大访问量。价格昂贵。

MySql:不支持事务处理,没有视图,没有存储过程和触发器,没有数据库端的用户自定义的函数,不能完全适用标准的SQL语法。目前可能已经支持。

 

语法区别

区别类型

SQLServer

Oracle

MySQL

[字符串拼接]

+

||

concat()

[控制处理数]

isnull()

|-NVL NVL(expr1,expr2) 如果第一个参数为空,那么先显示第二个参数,如果第一个参数不为空,则显示第一个参数

|-NVL2 NVL2(expr1,expr2,expr3)如果第一个参数为空则显示第二个参数,不为空则显示是第三个参数

|-NULLIF(expr1,expr2)expr1和expr2相等则返回NULL,否则返回第一个值

|-ifnull(expr1,expr2) 如果第一个参数为空,那么先显示第二个参数,如果第一个参数不为空,则显示第一个参数

|-isnull(expr) 表示判断参数是否为null,为null则1,否则为0

|-NULLIF(expr1,expr2)expr1和expr2相等则返回NULL,否则返回第一个值

[获取系统时间]

 getdate()

 sysdate

 now()

[日期格式化]

 convert(varchar(8),getdate(),112)

 to_char(sysdate,'yyyyMMdd')

 data_format(xcs_received_date,'%Ym%d')

[检查是否有表再删除]

 IF OBJECT_ID('xxx') IS NOT NULL  需要用到系统表(dbo.sysobjects)

 select count(1) from user_tables where tablename ='xxx'

 drop table if exists tablename

 

函数区别

区别类型

功能

语法

参数

返回值

SQLServer

Oracle

MySQL

SQL中SUBSTRING函数的用法

返回字符、二进制、文本或图像表达式的一部分

SUBSTRING ( expression, start, length ) SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。

expression 字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。

start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置。

length 整数或可以隐式转换为 int 的表达式,指定子字符串的长度。

如果 expression 是一种支持的字符数据类型,则返回字符数据。如果 expression 是一种支持的二进制数据类型,则返回二进制数据。如果 start = 1,则子字符串从表达式的第一个字符开始。

返回字符串的类型与给定表达式的类型相同(下表所示内容除外)。

SUBSTRING()

SUBSTR()

SUBSTR(), SUBSTRING()

 

简介SQL Server与Oracle的一些差异

1、Oracle字段不能直接使用Uid,使用“UID”,并且没有自增长

2、参数的前缀不一样,SQL Server的@,Oracle的是 :

3、SQL Server关键字使用[],Oracle使用""

4、Oracle数据不支持Bool,建议是用Number(1),False是0,True是1

5、Oracle表名不能使用AS关键字,可以直接 空格

6、SQL Server中nvarchar(1000)以上在Oracle中是Clob类型,查询需要特殊函数,例如:substr("字符串",4000)

7、Oracle存储过程参数不带":",而且参数名大写

8、Oracle中null与""认为是一样的