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/