达梦数据库迁移之group by 替换

达梦数据库迁移之group by 替换

最近在使用数据库迁移适配,由MySQL 库迁移到达梦数据库,其中进行行转列时,MySQL转换达梦sql语法有些问题,特记录。

在MySQL 下有Group_Concat(expr) ,在达梦及神通数据库下如何转换,有没有同样或者类似功能的函数呢?请看下面记录。

MySQL中 Group_Concat(expr) 函数支持 内部自定义连接分割符,使用时只需要 添加SEPARATOR ';'即可(表示使用 分号符 连接)。 默认 逗号 连接

达梦数据库(DM) 或着神通数据库(oscar) 使用WM_Concat(expr),默认 逗号(英文逗号) 连接,如果使用自定义连接符,需要使用 replace(str,exp1,exp2) 函数,示例:replace(name,’,’,’;’) 使用 分号符 替换原来的 逗号符。

MySQL 中行转列常用 函数:Group_Concat(expr):

示例-表A :select name ,age,sex ,favorite from student —操作合并示例 favorite 字段 【favorite 字段值:1、篮球,2、足球,3、篮球,4、游泳】

MYSQL: select Group_Concat(favorite) from student where name=‘zhangsan’; ----最终结果 favorite 中字段以【,】 连接 结果示例:篮球,足球,篮球,游泳

去重:select Group_Concat(DISTINCT facorite) from student where name=‘zhangsan’; ----最终结果 favorite 中字段以【,】 连接 结果示例:篮球,足球,游泳

去重后以【;】连接:select Group_Concat(DISTINCT facorite SEPARATOR ‘;’) from student where name=‘zhangsan’; ----最终结果 favorite 中字段以【;】 连接 结果示例:篮球;足球;游泳

DM 中行转列/与MYSQL中同样作用 函数:WM_Concat(expr):

示例(以MySQL中sql表示例):select name ,age,sex ,favorite from student —操作合并示例 favorite 字段 【favorite 字段值:1、篮球,2、足球,3、篮球,4、游泳】

DM: select WM_Concat(favorite) from student where name=‘zhangsan’; ----最终结果 favorite 中字段以【,】 连接 结果示例:篮球,足球,篮球,游泳

去重:select WM_Concat(DISTINCT facorite) from student where name=‘zhangsan’; ----最终结果 favorite 中字段以【,】 连接 结果示例:篮球,足球,游泳

去重后以【;】连接:select replace(WM_Concat(DISTINCT facorite),‘,’,‘,’ )from student where name=‘zhangsan’; ----最终结果 favorite 中字段以【;】 连接 结果示例:篮球;足球;游泳

注:神通数据库中行转列/与MySQL 中合并字符串函数一致的 也可以使用 WM_Concat(expr): 目前还没有使用神通数据库,不过也快了,使用了再更新。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值