MySQL迁移达梦,两个数据库的不同之处,需要修改的地方有哪些(持续更新)
1、DATEDIFF函数参数不同
MySQL:DATEDIFF(date1, date2)
达梦:DATEDIFF(DAY/MONTH, date1, date2)
2、去重
MySQL:去重可以使用DISTINCT、GROUP BY、子查询多种方式。比如:SELECT a.* FROM a LEFT JOIN b ON a.id = b.aId GROUP BY a.id。
达梦:不能使用GROUP BY去重,使用GROUP BY时,查询字段只能是统计,比如MAX()、SUM()等。
3、CASE
MySQL:SELECT * FROM a WHERE CASE WHEN status = 1 THEN name = ‘Bruce’ ELSE age = 20 END;
达梦:SELECT * FROM a WHERE IF(status = 1, name = ‘Bruce’, age = 20);
4、GROUP_CONCAT()函数不支持
MySQL:该函数用于将分为一组的值用逗号拼接。
达梦:使用LISTAGG(字段名, ‘,’) WITHIN GROUP (ORDER BY 字段名)代替
5、模式名information_schema不存在,尝试迁移
MySQL:在information_schema中查询表结构信息。
达梦:使用SYS.DBMS_METADATA.GET_DDL(“TABLE”, “SYSDBA”, “wms_purchase_order”)获取表结构信息。
6、“”符号不支持,去掉所有“
”符号。
7、双引号用于模式名、表名、列名,单引号用于参数、字符串,反之报错。
8、YEARWEEK()函数
MySQL:该函数用于获取哪年的哪周。
达梦:SELECT YEAR(‘2024-09-19’)||WEEK(‘2024-09-19’),返回202438。
9、DATE()函数
MySQL:该函数用于返回时间的日期部分。
达梦:SELECT CAST(‘2024-09-19 14:46:00’ AS DATE),返回’2024-09-19’。
10、当别名为关键字时,达梦会自动将别名转为大写,可加双引号防止报错。