常见区别
1. 连接字符串在Oracle中用“||”或者concatt('a','b'),SqlServer中用+,MySQL中用concat('a','b','c')。
2. orcale 生成唯一序列是 select sys.guid() from dual ,mysql是 select uuid() from dual。
3. mysql可以实现自增长主键(通过字段的auto_increment属性);Oracle则需要通过序列(Sequence)来实现。
4. mysql可以用双引号来引用字符串(当然单引号也行);Oracle只能用单引号。
5. mysql在查询语句中可以通过limit [offset,] 来直接分页;而Oracle需要使用rownum。
6. mysql对于真假的判断,0为假1为真;Oracle则是用true/false。
7. mysql的查询可以 select sysdate(); ;而Oracle需要引用虚表(select sysdate from dual;)。
8. mysql对于like的查询,CONCAT('%', #{name,jdbcType=VARCHAR},'%') ;Oracle则是用LIKE '%'||#{name,jdbcType=VARCHAR}||'%'
9. mysql的查询可以 select sysdate(); ;而Oracle需要引用虚表(select sysdate from dual;)。
10. mysql中备份命令:mysqldump,执行结果是一个sql文件;oracle备份命令:dpdump,执行结果是一个dmp文件。前者是文本sql命令,可以直接导入到其它mysql数据库,甚至可以稍作修改导入到其它类型的数据库;后者导出文件是二进制的,只能Oracle自己用(甚至还有版本限制)。
11. mysql中的命令默认是直接commit的;Oracle默认不是
12. mysql中日期的转换用dateformat()函数;Oracle用to_date()与to_char()两个函数。
13. mysql在Windows环境下大小写是不敏感的;unix/linux环境下,对数据库名、表名大小写敏感,列名大小写不敏感。Oracle则不论环境大小写都不敏感。
14. mysql支持枚举类型(enum)、集合类型(set);Oracle不直接支持,需要使用外键等其它手段实现。
常见函数区别
1. 功能: 返回不小于 X 的最小整数
用法:
mysqls: select ceiling(-1.001) value
oracle: select ceil(-1.001) value from dual
2. 功能: 在字符串 str 中所有出现的字符串 from_str 均被 to_str 替换,然后返回这个字符串.
用法:
mysql: SELECT REPLACE('abcdef', 'bcd', 'ijklmn') value
oracle: SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual
3. 函数名称不同:
ORACLE: select substr('abcd',2,2) value from dual
MYSQL: select substring('abcd',2,2) value
4. 函数名称不同:
instr -> locate(注意:locate的子串和总串的位置要互换)
ORACLE: SELECT instr('abcdefg', 'ab') VALUE FROM DUAL
MYSQL: SELECT locate('ab', 'abcdefg') VALUE
5. 函数名称不同:
ORACEL: SELECT length('AAAASDF') VALUE FROM DUAL
MYSQL: SELECT char_length('AAAASDF') VALUE
6. 函数名称不同(根据不同的作用进行选择):
ORACLE: select u.email_address, nvl(u.email_address, 10) value from sd_usr u (如果u.email_address=NULL,就在DB中用10替换其值)
MYSQL: select u.email_address, IFNULL(u.email_address, 10) value from sd_usr u(如果u.email_address=NULL,显示结果中是10,而不是在DB中用10替换其值)
select u.email_address, ISNULL(u.email_address) value from sd_usr u(如果u.email_address是NULL, 就显示1,否则就显示0)
7. decode说明:
(1). decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
(2). mysql If语法说明
功能: 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2;
否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在
语境而定。
用法:
mysql: SELECT IF(1>2,2,3);
8. 函数名称不同
ORACLE> select to_char(sysdate,'yyyy-mm-dd') from dual;
ORACLE> select to_char(sysdate,'hh24-mi-ss') from dual;
mysql> select date_format(now(),'%Y-%m-%d');
mysql> select time_format(now(),'%H-%i-%S');
9. 函数名称不同:
ORACLE:SELECT to_date('2009-3-6','yyyy-mm-dd') VAULE FROM DUAL
MYSQL: SELECT STR_TO_DATE('2004-03-01', '%Y-%m-%d') VAULE
10. 函数名称不同:
TRUNC函数为指定元素而截去的日期值。
ORACLE: select trunc(-1.002) value from dual
MYSQL:select cast(-1.002 as SIGNED) value
MYSQL:
字符集转换 : CONVERT(xxx USING gb2312)
类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型),类型必须用下列的类型:
可用的类型
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
11. 函数名称不同
ORACLE:SELECT TO_NUMBER('123') AS VALUE FROM DUAL;
MYSQL: SELECT CAST("123" AS SIGNED INTEGER) as value;
SIGNED INTEGER:带符号的整形
12. 写法不同:
ORACLE:select SYSDATE value from dual
MYSQL:select now() value / select sysdate() value
13. 函数名称不同:
ORACLE: SELECT ADD_MONTHS(sysdate, 2) as value from DUAL;
MYSQL: SELECT DATE_ADD(sysdate(), interval 2 month) as value from DUAL;
14. 功能: 返回两个日期之间的天数。
用法:
mysql: SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
oracle: 直接用两个日期相减(比如d1-d2=12.3)
15. Oracle内置函数SQLCODE和SQLERRM是特别用在OTHERS处理器中,分别用来返回Oracle的错误代码和错误消息。
MYSQL: 可以从JAVA中得到错误代码,错误状态和错误消息
16. Oracle内置函数SQLCODE和SQLERRM是特别用在OTHERS处理器中,分别用来返回Oracle的错误代码和错误消息。
MYSQL: 可以从JAVA中得到错误代码,错误状态和错误消息
17. 在MYSQL中是自动增长列. 如下方法获取最新ID:
START TRANSACTION;
INSERT INTO user(username,password)
VALUES (username,MD5(password));
SELECT LAST_INSERT_ID() INTO id;
COMMIT;
ORACLE中是使用 SEQUENCE;
oracle所有函数
1. ascii
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
2.CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZH C
-- -
赵 A
3.INITCAP
返回字符串并将字符串的第一个字母变为大写;
SQL> select initcap('smith') upp from dual;
UPP
-----
Smith
4.LOWER
返回字符串,并将所有的字符小写
SQL> select lower('AaBbCcDd')AaBbCcDd from dual;
AABBCCDD
--------
aabbccdd
5.UPPER
返回字符串,并将所有的字符大写
SQL> select upper('AaBbCcDd') upper from dual;
UPPER
--------
AABBCCDD
6.RPAD和LPAD(粘贴字符)
RPAD 在列的右边粘贴字符
LPAD 在列的左边粘贴字符
SQL> select lpad(rpad('jack',10,'*'),17,'*')from dual;
LPAD(RPAD('JACK',1
-----------------
*******jack******
不够字符则用*来填满
7.LTRIM和RTRIM
LTRIM 删除左边出现的字符串
RTRIM 删除右边出现的字符串
SQL> select ltrim(rtrim(' jack ',' '),' ') from dual;
LTRIM(RTRIM('
-------------
jack
所有函数链接:http://www.shouce.ren/api/oracle/#