字符串连接聚合函数 几例
来源:互联网 发布:数据烟囱 是什么意思 编辑:程序博客网 时间:2024/04/28 08:47
userId role_name role_id
1 管理员 1
1 编辑 2
1 超级管理员 3
2 普通会员 4
3 高级会员 5
4 null null
很简单的数据,就是一个用户可能会对应多个角色,现在要求能用程序或者sql的方式用户和角色逗号进行
分割。要求得到的数据如下:
userId role_name
1 管理员,编辑,超级管理员
2 普通会员
3 高级会员
4 null
解答:
用程序估计是再简单不过了,数据库的话如下:
mysql:直接调用函数group_contact完成
oracle10g:直接掉函数wm_concat完成
oracle9i:麻烦点,不过主要是通过sys_connect_by_path,这个函数能树枝进行按指定字符连接,之所以产
生树是因为这里面用到了oracle的START WITH 递归成树的
(1) MySQL
group_concat函数是典型的字符串连接函数,下面就为您介绍MySQL group_concat的语法,希望对您学习
MySQL group_concat函数有所帮助。
MySQL group_concat函数
完整的语法如下:
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
我的理解就是: 后面的 group by xx 分好组之后, 然后将组内的数据连接起来,默认是逗号
测试sql语句:
insert into role VALUES(1,1,'管理员',1);
insert into role VALUES(2,1,'编辑',2);
insert into role VALUES(3,1,'超级管理员',3);
insert into role VALUES(4,2,'普通会员',4);
insert into role VALUES(5,3,'高级会员',5);
例子: select userId,group_concat(role_name,';') from role group by userId;
result:
1 管理员;,编辑;,超级管理员;
2 普通会员;
3 高级会员;
扩展:
如果ORALCE\MYSQL本身有提供这字符串连接聚合函数的话,楼主这个问题,其实很容易解决的,即按USERID分组后,再将同组的role_name进行字符串连接就OVER。
像ORALCE中wm_concat函数还不是ORACLE所有版本都有的,而像这种字符连接函数在实际编程中,是很常用的,SELECT CATSTR(role_name) FROM USER GROUP BY USERID,而这边这个 CATSTR聚合函数是自己在数据库PL/SQL实现的,具体实现方式可参见http://hi.baidu.com/xoy2129/blog/item/c7885e66a201f125ab184cea.html
这样CATSTR就具有通用性了
也就是自定义函数
参见另外一篇: oracle中用户自己创建与调用聚合函数
- 字符串连接聚合函数 几例
- SQL-字符串连接聚合函数
- SqlServerCLR聚合函数:分组连接字符串
- 用Oracle自定义聚合函数实现字符串连接的聚合
- Oracle自定义聚合函数实现字符串连接的聚合
- 聚合 字符串连接
- Oracle 聚合函数解决聚集连接字符串问题
- Oracle 聚合函数解决聚集连接字符串问题
- Oracle 聚合函数解决聚集连接字符串问题
- Oracle字段转字符串/多行记录合并/连接/聚合字符串的几种方法
- Oracle字段转字符串/多行记录合并/连接/聚合字符串的几种方法
- 字符串+ 聚合函数?
- Oracle 字符串聚合函数
- mysql中字符串聚合连接
- Oracle多行记录合并/连接/聚合字符串的几种方法 [转]
- Oracle多行记录合并/连接/聚合字符串的几种方法
- Oracle多行记录合并/连接/聚合字符串的几种方法
- Oracle多行记录合并/连接/聚合字符串的几种方法
- AndroidManifest.xml 详解 (一) 之<manifest>——译自《Beginning Android Games》
- PHP常用的调试技术 -- 一周的时间正在整理
- 多线程(2)——服务生(委托)的闪亮登场
- Oracle 物化视图 .
- VC ComboBox使用
- 字符串连接聚合函数 几例
- Oracle 视图(View)
- Cisco SUPER VLAN 配置
- VC CListBox中加复选框
- VC Radio控件
- oracle中用户自己创建与调用聚合函数
- 浮点数的比较(1)
- SQL2008存储过程游标及锁(草稿,深入研究使用后会有更新)
- Mac OS X(lion)软件推荐