对比达梦适配
数据库语法对比
说明 | 达梦 | 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 也就是没有