Mysql与Oracle函数差异以及SQL对比

由于公司业务原因,接触到的数据也比较多,最常用的就是Mysql和Oracle

SQL语法大同小异,最主要是经常使用的函数有些差异

1. GROUP_CONCAT函数

MySQL中GROUP_CONCAT函数用于将分组后的数据连接在一起,常用于将同一个分组下的多条记录按照指定顺序连接成一个字符串。

MySQL示例:

SELECT group_concat(name) FROM students GROUP BY gender;


Oracle替代写法:

SELECT listagg(name, ',') WITHIN GROUP (ORDER BY name) FROM students GROUP BY gender;

2. IFNULL函数

MySQL中IFNULL函数用于判断表达式是否为NULL,如果为NULL,则返回第二个参数,否则返回原表达式的值。

MySQL示例:

SELECT IFNULL(name,'无名氏') FROM students;


Oracle替代写法:

SELECT NVL(name, '无名氏') FROM students;

3. DATE_FORMAT函数

MySQL中DATE_FORMAT函数用于将日期格式化为指定的格式。

MySQL示例:

SELECT DATE_FORMAT(birthdate,'%Y-%m-%d') FROM students;


Oracle替代写法:

SELECT TO_CHAR(birthdate,'YYYY-MM-DD') FROM students;

4. LIMIT子句

MySQL中LIMIT子句用于限制查询结果返回的行数。

MySQL示例:

SELECT * FROM students LIMIT 10;


Oracle替代写法:

SELECT * FROM (SELECT rownum rn, t.* FROM students t) WHERE rn <= 10;

5. CONV函数

MySQL中CONV函数用于将一个数字从一种进制转换为另一种进制。

MySQL示例:

SELECT CONV(10,10,2);


Oracle替代写法:

SELECT to_char(to_number('10', 'XXXXXXXX'), 'XXXXXXXXXXXXXXXX') FROM dual;

6. IF函数

MySQL中IF函数用于根据条件返回不同的值。

MySQL示例:

SELECT IF(score >= 60, '及格', '不及格') FROM students;

Oracle替代写法:

SELECT CASE WHEN score >= 60 THEN '及格' ELSE '不及格' END FROM students;

7. CURDATE函数

MySQL中CURDATE函数用于返回当前日期。

MySQL示例:

SELECT CURDATE();


Oracle替代写法:

SELECT SYSDATE FROM dual;

8. STR_TO_DATE函数

MySQL中STR_TO_DATE函数用于将字符串转换为日期。

MySQL示例:

SELECT STR_TO_DATE('2020-01-01','%Y-%m-%d');


Oracle替代写法:

SELECT TO_DATE('2020-01-01', 'YYYY-MM-DD') FROM dual;

9. RAND函数

MySQL中RAND函数用于生成随机数。

MySQL示例:

SELECT RAND();


Oracle替代写法:

SELECT DBMS_RANDOM.VALUE FROM dual;

10. EXP函数

MySQL中EXP函数用于计算指数函数。

MySQL示例:

SELECT EXP(2);


Oracle替代写法:

SELECT POWER(e, 2) FROM dual;

11. CONCAT_WS函数

MySQL中CONCAT_WS函数用于将多个字符串连接在一起,并指定连接符。

MySQL示例:

SELECT CONCAT_WS('-','2020','01','01');


Oracle替代写法:

SELECT '2020-' || '01-' || '01' FROM dual;

12. DATE_ADD函数

MySQL中DATE_ADD函数用于对日期进行加减操作。

MySQL示例:

SELECT DATE_ADD(birthdate, INTERVAL 1 DAY) FROM students;


Oracle替代写法:

SELECT birthdate + 1 FROM students;

13. LAST_INSERT_ID函数

MySQL中LAST_INSERT_ID函数用于返回最后一次插入操作生成的自增长ID。

MySQL示例:

INSERT INTO students(name) VALUES('张三');
SELECT LAST_INSERT_ID();


Oracle替代写法:

在Oracle中可以使用Sequence实现自增长ID的功能。

14. REPLACE函数

MySQL中REPLACE函数用于将字符串中的指定字符替换为另一个字符。

MySQL示例:

SELECT REPLACE('2020-01-01','-','/');


Oracle替代写法:

SELECT REPLACE('2020-01-01', '-', '/') FROM dual;

15. INTERVAL关键字

MySQL中INTERVAL关键字用于对日期进行加减操作。

MySQL示例:

SELECT DATE_ADD(birthdate, INTERVAL 1 DAY) FROM students;


Oracle替代写法:

SELECT birthdate + 1 FROM students;

基本是一些业务常用的函数,使用的时候还是得多多注意

猜你喜欢

转载自blog.csdn.net/weixin_42559574/article/details/129943227