MySQL、DM 行转列及字段去重(Group_Concat())
最近在使用数据库迁移适配,由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): 目前还没有使用神通数据库,不过也快了,使用了再更新。
以上为本次记录,后期继续更新。转载请注明出处,感谢!如有不合理之处,请大家多多指教。
如果您觉得本文对您有帮助,欢迎点击“收藏”按钮!(/:微笑)欢迎转载,转载请注明出处。
MySQL、DM 行转列及字段去重(Group_Concat())的更多相关文章
- 关于MySQL的行转列的简单应用(二)---group函数
MySQL的行转列.列转行.连接字符串 concat.concat_ws.group_concat函数用法使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一 ...
- mysql之行转列与列转行
mysql之行转列与列转行是数据查询的常见操作,以更好的来展示数据,下面就详细说说怎么实现. 行转列 行转列的话,就是将一条一条的行数据记录转换为一条列数据展示,一般来说是根据某一列来做汇总数据的操作 ...
- Mysql数据处理/行转列/列转行/分割/拼接/数据复制汇总
mysql数据处理记录(使用的 Workbench) 生成随机数 逗号或分号拼接的字符串分割成多行 多行数据转化成用逗号拼接的字符串 将A表的数据添加到B表 一.生成随机数 生成18位:(19位就加颗 ...
- mysql动态行转列
测试数据 DROP TABLE IF EXISTS `score`; CREATE TABLE `score` ( `id` ) NOT NULL AUTO_INCREMENT, `class` ) ...
- mysql实现行转列功能
实现从图一转行成图二的功能: 图一: 图二: 建表语句: CREATE TABLE `t_user_score` ( `id` ) NOT NULL AUTO_INCREMENT COMMENT '主 ...
- MySQL数据库行转列
一.数据源如下所示 二.对应SQL语句如下所示 -- 行转列 SELECT t1.`产品名称`, SUM(CASE t1.`日期` WHEN '2019-11-11' THEN t1.`数量` ELS ...
- 关于MySQL的行转列的简单应用
sql 脚本 -- 创建表 学生表 CREATE TABLE `student` ( `stuid` VARCHAR(16) NOT NULL COMMENT '学号', `stunm` VARCHA ...
- mySQL的行转列
因为MYSQL里边没有 PIVOT 现记录: 原表格: mysql语句: SELECT MAX(CASE WHEN corol='红' THEN NUM else 0 END) A ...
- mysql 动态行转列
表结果:create table user( id int , username ), create_time datetime, type int ) insert into user (`id`, ...
随机推荐
- 2016年第七届蓝桥杯【C++省赛B组】F、G、H、J 题解
F. 方格填数 #深搜 题意 有\(10\)个格子,填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻),求可能的填数方案数. +--+--+--+ | | | | +--+- ...
- mq中nio
MappedFile#appendMessagesInner
- [BUGCASE]Webpack打包报JavaScript堆内存泄漏的错误
一.问题描述 执行npm run build之后报错: 报错信息: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript he ...
- 2. 三数之和(数组、hashset)
思路及算法: 该题与第一题的"两数之和"相似,三数之和为0,不就是两数之和为第三个数的相反数吗?因为不能重复,所以,首先进行了一遍排序:其次,在枚举的时候判断了本次的第三个数的值是 ...
- 如何测试一个APP
1.是否支持各种手机系统 2.是否会因为分辨率而出错 3.不同机型能否安装 4.老旧机型 能否通用 5.广告时长 6.测试能否登陆注册 7.卸载时是否会发生意外 8.安装时会不会误认为带病毒 9.用户 ...
- 老猿学5G扫盲贴:3GPP中的5G计费架构
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.计费逻辑架构和信息流 在32240子系列文档内 ...
- 第14.9节 Python中使用urllib.request+BeautifulSoup获取url访问的基本信息
利用urllib.request读取url文档的内容并使用BeautifulSoup解析后,可以通过一些基本的BeautifulSoup对象输出html文档的基本信息.以博文<第14.6节 使用 ...
- MDX非常规百分比算法-过滤数据后的百分比
网上有很多关于占比的帖子,基本上都是按照层次结构来做的,比如某个子项占总体的百分比(\all).某个子项占父项的百分比(\parent).某个子项占其祖先的百分比(\ancestor)....等等,如 ...
- 面试阿里,字节,腾讯90%被问到的springboot常见面试题,这次给你讲的明明白白!
1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有 ...
- PHP代码审计分段讲解(6)
14 intval函数四舍五入 <?php if($_GET[id]) { mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_M ...