oracle语法转mysql语法

常用的oracle语法转mysql语法

1. Oracle的连接符“||”在MySQL中使用“CONCAT”函数,例如:

Oracle:SELECT first_name || ' ' || last_name FROM employees;
MySQL:SELECT CONCAT(first_name, ' ', last_name) FROM employees;

2. Oracle的日期函数“SYSDATE”在MySQL中使用“NOW”函数,例如:

Oracle:SELECT SYSDATE FROM dual;
MySQL:SELECT NOW();

3. Oracle的“NVL”函数在MySQL中使用“IFNULL”函数,例如:

Oracle:SELECT NVL(salary, 0) FROM employees;
MySQL:SELECT IFNULL(salary, 0) FROM employees;

4. Oracle的“DECODE”函数在MySQL中使用“CASE”语句,例如:

Oracle:SELECT DECODE(job_id, 'IT_PROG', 'IT', 'SA_MAN', 'Sales') FROM employees;
MySQL:SELECT CASE job_id WHEN 'IT_PROG' THEN 'IT' WHEN 'SA_MAN' THEN 'Sales' END FROM employees;

5. Oracle的“ROWNUM”关键字在MySQL中使用“LIMIT”关键字,例如:

Oracle:SELECT * FROM employees WHERE ROWNUM <= 10;
MySQL:SELECT * FROM employees LIMIT 10;

6. Oracle的“TRUNC”函数在MySQL中使用“DATE_FORMAT”函数,例如:

Oracle:SELECT TRUNC(hire_date, 'MM') FROM employees;
MySQL:SELECT DATE_FORMAT(hire_date, '%Y-%m-01') FROM employees;

7. Oracle的“TO_CHAR”函数在MySQL中使用“DATE_FORMAT”函数,例如:

Oracle:SELECT TO_CHAR(hire_date, 'YYYY-MM-DD') FROM employees;
MySQL:SELECT DATE_FORMAT(hire_date, '%Y-%m-%d') FROM employees;

8. Oracle的“SUBSTR”函数在MySQL中使用“SUBSTRING”函数,例如:

Oracle:SELECT SUBSTR(first_name, 1, 3) FROM employees;
MySQL:SELECT SUBSTRING(first_name, 1, 3) FROM employees;

9. Oracle的“INSTR”函数在MySQL中使用“LOCATE”函数,例如:

Oracle:SELECT INSTR(first_name, 'a') FROM employees;
MySQL:SELECT LOCATE('a', first_name) FROM employees;

10. Oracle的“LENGTH”函数在MySQL中使用“CHAR_LENGTH”函数,例如:

Oracle:SELECT LENGTH(first_name) FROM employees;
MySQL:SELECT CHAR_LENGTH(first_name) FROM employees;

11. Oracle的“ROUND”函数在MySQL中使用“ROUND”函数,例如:

Oracle:SELECT ROUND(salary, 2) FROM employees;
MySQL:SELECT ROUND(salary, 2) FROM employees;

12. Oracle的“CEIL”函数在MySQL中使用“CEILING”函数,例如:

Oracle:SELECT CEIL(salary) FROM employees;
MySQL:SELECT CEILING(salary) FROM employees;

13. Oracle的“FLOOR”函数在MySQL中使用“FLOOR”函数,例如:

Oracle:SELECT FLOOR(salary) FROM employees;
MySQL:SELECT FLOOR(salary) FROM employees;

14. Oracle的“MONTHS_BETWEEN”函数在MySQL中使用“PERIOD_DIFF”函数,例如:

Oracle:SELECT MONTHS_BETWEEN(hire_date, SYSDATE) FROM employees;
MySQL:SELECT PERIOD_DIFF(DATE_FORMAT(SYSDATE(), '%Y%m'), DATE_FORMAT(hire_date, '%Y%m')) FROM employees;

15. Oracle的“ADD_MONTHS”函数在MySQL中使用“DATE_ADD”函数,例如:

Oracle:SELECT ADD_MONTHS(hire_date, 3) FROM employees;
MySQL:SELECT DATE_ADD(hire_date, INTERVAL 3 MONTH) FROM employees;

16. Oracle的“LAST_DAY”函数在MySQL中使用“LAST_DAY”函数,例如:

Oracle:SELECT LAST_DAY(hire_date) FROM employees;
MySQL:SELECT LAST_DAY(hire_date) FROM employees;

17. Oracle的“EXTRACT”函数在MySQL中使用“DATE_FORMAT”函数,例如:

Oracle:SELECT EXTRACT(YEAR FROM hire_date) FROM employees;
MySQL:SELECT DATE_FORMAT(hire_date, '%Y') FROM employees;

18. Oracle的“TO_DATE”函数在MySQL中使用“STR_TO_DATE”函数,例如:

Oracle:SELECT TO_DATE('2022-01-01', 'YYYY-MM-DD') FROM dual;
MySQL:SELECT STR_TO_DATE('2022-01-01', '%Y-%m-%d');

19. Oracle的“TO_NUMBER”函数在MySQL中使用“CAST”函数,例如:

Oracle:SELECT TO_NUMBER('123') FROM dual;
MySQL:SELECT CAST('123' AS UNSIGNED);

20. Oracle的“TO_CHAR”函数在MySQL中使用“DATE_FORMAT”函数,例如:

Oracle:SELECT TO_CHAR(hire_date, 'YYYY-MM-DD') FROM employees;
MySQL:SELECT DATE_FORMAT(hire_date, '%Y-%m-%d') FROM employees;

21. Oracle的“GREATEST”函数在MySQL中使用“GREATEST”函数,例如:

Oracle:SELECT GREATEST(1, 2, 3) FROM dual;
MySQL:SELECT GREATEST(1, 2, 3);

22. Oracle的“LEAST”函数在MySQL中使用“LEAST”函数,例如:

Oracle:SELECT LEAST(1, 2, 3) FROM dual;
MySQL:SELECT LEAST(1, 2, 3);

23. Oracle的“INITCAP”函数在MySQL中使用“CONCAT”和“UPPER”函数,例如:

Oracle:SELECT INITCAP('hello world') FROM dual;
MySQL:SELECT CONCAT(UPPER(SUBSTRING('hello world', 1, 1)), LOWER(SUBSTRING('hello world', 2))) FROM dual;

24. Oracle的“TRANSLATE”函数在MySQL中使用“REPLACE”函数,例如:

Oracle:SELECT TRANSLATE('hello', 'el', '12') FROM dual;
MySQL:SELECT REPLACE(REPLACE('hello', 'e', '1'), 'l', '2') FROM dual;

25. Oracle的“REGEXP_LIKE”函数在MySQL中使用“REGEXP”关键字,例如:

Oracle:SELECT REGEXP_LIKE('hello', '^[a-z]+$') FROM dual;
MySQL:SELECT 'hello' REGEXP '^[a-z]+$';

26. Oracle的“REGEXP_REPLACE”函数在MySQL中使用“REGEXP_REPLACE”函数,例如:

Oracle:SELECT REGEXP_REPLACE('hello world', 'o', '0') FROM dual;
MySQL:SELECT REGEXP_REPLACE('hello world', 'o', '0');

27. Oracle的“REGEXP_INSTR”函数在MySQL中使用“INSTR”函数和“REGEXP”关键字,例如:

Oracle:SELECT REGEXP_INSTR('hello world', 'o') FROM dual;
MySQL:SELECT INSTR('hello world', 'o') FROM dual WHERE 'hello world' REGEXP 'o';

28. Oracle的“REGEXP_SUBSTR”函数在MySQL中使用“SUBSTRING_INDEX”函数和“REGEXP”关键字,例如:

Oracle:SELECT REGEXP_SUBSTR('hello world', 'o') FROM dual;
MySQL:SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('hello world', 'o', 2), 'o', -1) FROM dual WHERE 'hello world' REGEXP 'o';

29. Oracle的“CONNECT BY”语句在MySQL中使用“WITH RECURSIVE”语句,例如:

Oracle:SELECT * FROM employees CONNECT BY PRIOR employee_id = manager_id;
MySQL:WITH RECURSIVE cte AS (SELECT * FROM employees WHERE employee_id = 1 UNION ALL SELECT e.* FROM employees e JOIN cte ON e.manager_id = cte.employee_id) SELECT * FROM cte;

30. Oracle的“UNION ALL”关键字在MySQL中使用“UNION ALL”关键字,例如:

Oracle:SELECT * FROM employees UNION ALL SELECT * FROM departments;
MySQL:SELECT * FROM employees UNION ALL SELECT * FROM departments;

31. Oracle的“INTERSECT”关键字在MySQL中使用“INNER JOIN”语句,例如:

Oracle:SELECT * FROM employees INTERSECT SELECT * FROM departments;
MySQL:SELECT * FROM employees INNER JOIN departments USING (department_id);

32. Oracle的“MINUS”关键字在MySQL中使用“NOT IN”语句,例如:

Oracle:SELECT * FROM employees MINUS SELECT * FROM departments;
MySQL:SELECT * FROM employees WHERE (employee_id, first_name, last_name) NOT IN (SELECT employee_id, first_name, last_name FROM departments);

33. Oracle的“PCTFREE”关键字在MySQL中没有对应的语法,可以忽略。

34. Oracle的“PCTUSED”关键字在MySQL中没有对应的语法,可以忽略。

35. Oracle的“TABLESPACE”关键字在MySQL中没有对应的语法,可以忽略。

36. Oracle的“ROWID”关键字在MySQL中没有对应的语法,可以忽略。

37. Oracle的“BETWEEN”关键字在MySQL中使用“BETWEEN”关键字,例如:

Oracle:SELECT * FROM employees WHERE salary BETWEEN 1000 AND 2000;
MySQL:SELECT * FROM employees WHERE salary BETWEEN 1000 AND 2000;

38. Oracle的“CASE”语句在MySQL中使用“CASE”语句,例如:

Oracle:SELECT CASE WHEN salary > 1000 THEN 'High' ELSE 'Low' END FROM employees;
MySQL:SELECT CASE WHEN salary > 1000 THEN 'High' ELSE 'Low' END FROM employees;

39. Oracle的“GROUP BY”语句在MySQL中使用“GROUP BY”语句,例如:

Oracle:SELECT department_id, AVG(salary) FROM employees GROUP BY department_id;
MySQL:SELECT department_id, AVG(salary) FROM employees GROUP BY department_id;

40. Oracle的“HAVING”语句在MySQL中使用“HAVING”语句,例如:

Oracle:SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > 1000;
MySQL:SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > 1000;

41. Oracle的“ORDER BY”语句在MySQL中使用“ORDER BY”语句,例如:

Oracle:SELECT * FROM employees ORDER BY salary DESC;
MySQL:SELECT * FROM employees ORDER BY salary DESC;

42. Oracle的“ASC”关键字在MySQL中使用“ASC”关键字,例如:

Oracle:SELECT * FROM employees ORDER BY salary ASC;
MySQL:SELECT * FROM employees ORDER BY salary ASC;

43. Oracle的“DESC”关键字在MySQL中使用“DESC

其他的

在这里插入图片描述

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌的黑星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值