1.字段名取别名,mysql中使用单引号,达梦中使用双引号,没有使用别名的情况下字段名自动大写

select  as "userName" from userTable a

2.在达梦中没有find_in_set函数,需要自己编写

CREATE OR REPLACE FUNCTION "FIND_IN_SET"("PIV_STR1" IN VARCHAR2(32767),"PIV_STR2" IN VARCHAR2(32767),"P_SEP" IN VARCHAR2(32767) DEFAULT ',')
RETURN NUMBER
AUTHID DEFINER
 IS
                l_idx     number:=0;                 -- 用于计算piv_str2中分隔符的位置
                str       varchar2(500);             -- 根据分隔符截取的子字符串
                piv_str   varchar2(500) := piv_str2; -- 将piv_str2赋值给piv_str
                res       number        :=0;         -- 返回结果
                loopIndex number        :=0;
        BEGIN
                -- 如果piv_str中没有分割符,直接判断piv_str1和piv_str是否相等,相等 res=1
                IF instr(piv_str, p_sep, 1) = 0 THEN
                        IF piv_str          = piv_str1 THEN
                                res        := 1;
                        END IF;
                ELSE
                        -- 循环按分隔符截取piv_str
                        LOOP
                                l_idx    := instr(piv_str, p_sep);
                                loopIndex:=loopIndex+1;
                                -- 当piv_str中还有分隔符时
                                IF l_idx > 0 THEN
                                        -- 截取第一个分隔符前的字段str
                                        str:= substr(piv_str, 1, l_idx-1);
                                        -- 判断 str 和piv_str1 是否相等,相等 res=1 并结束循环判断
                                        IF str      = piv_str1 THEN
                                                res:= loopIndex;
                                                EXIT;
                                        END IF;
                                        piv_str := substr(piv_str, l_idx+length(p_sep));
                                ELSE
                                        -- 当截取后的piv_str 中不存在分割符时,判断piv_str和piv_str1是否相等,相等 res=1
                                        IF piv_str  = piv_str1 THEN
                                                res:= loopIndex;
                                        END IF;
                                        -- 无论最后是否相等,都跳出循环
                                        EXIT;
                                END IF;
                        END LOOP;
                        -- 结束循环
                END IF;
                -- 返回res
                RETURN res;
        END FIND_IN_SET;

3.使用分组时,查询的字段必须出现在group by中(聚合函数除外)

--查询年龄为18的人,并按学号分组(想要显示姓名字段,必须在group by后面加上name字段)
select a.student_id, from userTable a where age='18' group by a.student_id,

4.达梦中没有group_concat函数,需要使用WM_CONCAT函数代替,WM_CONCAT函数只有一个参数,不能指定分隔符,不能拼接其他字段

select WM_CONCAT() from userTable a

5.当WM_CONCAT字段内容太长时会超出字符串长度,需要cast函数转换类型

select cast(WM_CONCAT() as varchar2) as "names" from userTable a

6.CONVERT函数与mysql的使用方式是相反的

--mysql
select CONVERT(a.age, varchar2) as 'age' from userTable a
--达梦 
select CONVERT(varchar2,a.age) as "age" from userTable a

7.达梦不支持“`”字符(英文状态esc下面的按键),如果表中的字段名和关键字重复,字段名需使用双引号,使用双引号时查询字段名必须和表中字段名大小写一致

--表中如果是小写,双引号中字段必须是小写,如果表中是大写,此处双引号中value必须大写
select a."value" from userTable a

8.在达梦中where条件查询的字段可以不加双引号,只有需要指定字段大小写时才使用

9.to_date改为date_format

select date_format(now(),'%Y-%m-%d')

10.日期类型不能直接和字符类型的日期比较大小,需要用date_format转换后使用

11.SUBDATE()改成DATE_SUB()函数

12.ADDDATE()改成DATE_ADD()函数

13.distinct和order by同时使用时,排序的字段必须出现在distinct关键字后面

最终,附上达梦技术文档地址:https://eco.dameng.com/document/dm/zh-cn/sql-dev/