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() |
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与""认为是一样的