对比达梦适配

数据库语法对比

说明 达梦 mysql 备注
行数 rownum limit
字符串拼接 concat(concat(a,b),c) concat_ws(separator,str1,str2,…)
CONCAT_WS() 代表 CONCAT With Separator ,是 CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是 CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
mysql 中拼接不能使用||;mysql 中与 java 中逻辑一致;不使用 concat(a,b,c…)是因为如果拼接中含有空会返回空
判空赋值 nvl()

1.nvl(a,b)若 a 为空,返回 b,若 a 为非空返回 a。—处理参数个数有限,只能传两个参数。

2.对 a、b 两个参数的数据类型没有要求,可相同可不同。

coalesce()
coalesce(a,b,c,d,e,f,…..)返回第一个不为空的参数。—-处理参数个数没有限制。
对处理参数的数据类型有严格要求,所有参数的数据类型必须保持一致。
判空赋值 nvl2(a,b,c) if(length(a)>0,b,c) mysql 中 if 函数逻辑类似三元表达式
行拼接 listagg(a,’,’) within group (order by b) group_concat(a order by b SEPARATOR ‘,’)
生成 uuid get_uuid() uuid()
转型 int to_number(a) cast(a as unsigned int)
转型字符串 to_char(123) cast(123 as char) 时间格式转字符串使用:
date_format(date,’%Y-%m-%d’)
转型时间 to_date('2020-01-01','yyyy-MM-dd HH24:mi:ss') str_to_date(‘2020-01-01’,’%Y-%m-%d %H:%i:%s’)
排序号 select row_number() OVER (ORDER BY a) as rownum from b SELECT @rownum := @rownum +1 AS rownum, e.* FROM (SELECT @rownum := 0) r, employee e 根据某列等,生成排序号
代码块(增删改查 )执行 begin DELETE FROM au04 where parentid = ‘0000000’;DELETE FROM au03 where parentid = ‘0000000’;end; DELETE FROM au04 where parentid = ‘0000000’;DELETE FROM au03 where parentid = ‘0000000’; 需要在配置文件中的 jdbc 连接串 url 后添加:allowMultiQueries=true
逻辑代码块执行 { call INIT_POINT_NODE_RESOURCE(#{nodeid},#{point_id}) } 对于达梦中存储过程等,mysql 需将存储过程在数据库声明,然后通过举例中调用
单参数递归 单一参数递归可以使用此方法,多参数需要声明函数,参考见其它 sheet 页

mysql 查询出来的 sum 结果后边有.0 如何去除

1
cast(sum( gjbz )as decimal(16,0)) gjbz

这样可以有效避免查询结果在页面展示的时候出来.0 结尾的整数
16 表示小数点后可以有 16 位,0 长度为 0 也就是没有