精华内容
下载资源
问答
  • 2019-08-27 17:03:49

    oracle数据库中wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle数据库wm_concat(column)函数实现字段合并

    如:

    shopping:

    ----------------------------------------

    u_id       goods            num

    ------------------------------------------

    1                苹果                2

    2                 梨子               5

    1                 西瓜               4

    3                 葡萄               1

    3                香蕉                1

    1               橘子                 3

    =======================

    想要的结果为:

    --------------------------------

    u_id          goods_sum

    ____________________

    1              苹果,西瓜,橘子

    2              梨子

    3              葡萄,香蕉

    --------------------------------

    select u_id, wmsys.wm_concat(goods) goods_sum   from shopping   group by u_id  

    想要的结果2:

    --------------------------------

    u_id          goods_sum

    ____________________

    1              苹果(2斤),西瓜(4斤),橘子(3斤)

    2              梨子(5斤)

    3              葡萄(1斤),香蕉(1斤)

    ---------------------------------

    使用oracle wm_concat(column)函数实现:

    select u_id, wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum   from shopping   group by u_id   

    更多相关内容
  • NULL 博文链接:https://vernonchen163.iteye.com/blog/2177323
  • wmsys.wm_concat函数,它的作用是以’,’链接字符例子如下:SQL> create table idtable (id number,name varchar2(30));Table createdSQL> insert into idtable values(10,’ab’);1 row insertedSQL> ...

    wmsys.wm_concat函数,它的作用是以’,’链接字符

    例子如下:

    SQL> create table idtable (id number,name varchar2(30));

    Table created

    SQL> insert into idtable values(10,’ab’);

    1 row inserted

    SQL> insert into idtable values(10,’bc’);

    1 row inserted

    SQL> insert into idtable values(10,’cd’);

    1 row inserted

    SQL> insert into idtable values(20,’hi’);

    1 row inserted

    SQL> insert into idtable values(20,’ij’);

    1 row inserted

    SQL> insert into idtable values(20,’mn’);

    1 row inserted

    SQL> select * from idtable;

    ID NAME

    ———- ——————————

    10 ab

    10 bc

    10 cd

    20 hi

    20 ij

    20 mn

    6 rows selected

    SQL> select id,wmsys.wm_concat(name) name from idtable

    2  group by id;

    ID NAME

    ———- ——————————————————————————–

    10 ab,bc,cd

    20 hi,ij,mn

    SQL> select id,wmsys.wm_concat(name) over (order by id) name from idtable;

    ID NAME

    ———- ——————————————————————————–

    10 ab,bc,cd

    10 ab,bc,cd

    10 ab,bc,cd

    20 ab,bc,cd,hi,ij,mn

    20 ab,bc,cd,hi,ij,mn

    20 ab,bc,cd,hi,ij,mn

    6 rows selected

    SQL> select id,wmsys.wm_concat(name) over (order by id,name) name from idtable;

    ID NAME

    ———- ——————————————————————————–

    10 ab

    10 ab,bc

    10 ab,bc,cd

    20 ab,bc,cd,hi

    20 ab,bc,cd,hi,ij

    20 ab,bc,cd,hi,ij,mn

    6 rows selected

    个人觉得这个用法比较有趣.

    SQL> select id,wmsys.wm_concat(name) over (partition by id) name from idtable;

    ID NAME

    ———- ——————————————————————————–

    10 ab,bc,cd

    10 ab,bc,cd

    10 ab,bc,cd

    20 hi,ij,mn

    20 hi,ij,mn

    20 hi,ij,mn

    6 rows selected

    SQL> select id,wmsys.wm_concat(name) over (partition by id,name) name from idtable;

    ID NAME

    ———- ——————————————————————————–

    10 ab

    10 bc

    10 cd

    20 hi

    20 ij

    20 mn

    6 rows selected

    展开全文
  • wm_concat函数 用法

    万次阅读 2018-06-07 09:16:54
    [sql] view plain copy首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用 准备测试数据 SQL> create ...
    [sql]  view plain  copy
    1. 首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用  
    2. 准备测试数据  
    3. SQL> create table test(id number,name varchar2(20));  
    4. SQL> insert into test values(1,'a');  
    5. SQL> insert into test values(1,'b');  
    6. SQL> insert into test values(1,'c');  
    7. SQL> insert into test values(2,'d');  
    8. SQL> insert into test values(2,'e');  
    9. SQL> commit;  
    10. 效果1 : 行转列  
    11. SQL> select wm_concat(namefrom test;  
    12. WM_CONCAT(NAME)  
    13. -------------------------------------------------------------------------  
    14. a,b,c,d,e  
    15. 效果2: 把结果里的逗号替换成"|"  
    16. SQL> select replace(wm_concat(name),',','|'from test;  
    17. REPLACE(WM_CONCAT(NAME),',','|')  
    18. -----------------------------------------------------------------------  
    19. a|b|c|d|e  
    20. 效果3:按ID分组合并name  
    21. SQL> select id,wm_concat(namename from test group by id;  
    22. ID NAME  
    23. ---------- ------------------------------  
    24. 1 a,b,c  
    25. 2 d,e  
    26. 懒人扩展用法:  
    27. 案例:我要写一个视图,类似"create or replace view as select 字段1,...字段50 from tablename" ,基表有50多个字段,要是靠手工写太麻烦了,有没有什么简便的方法? 当然有了,看我如果应用wm_concat来让这个需求变简单  
    28. SQL> select 'create or replace view as select '|| wm_concat(column_name) || ' from dept'from user_tab_columns where table_name='DEPT';  
    29. 'CREATEORREPLACEVIEWASSELECT'||WM_CONCAT(COLUMN_NAME)||'FROMDEPT'  
    30. --------------------------------------------------------------------------------  
    31. create or replace view as select DEPTNO,DNAME,LOC from dept  
    展开全文
  • 1、oracle函数 WMSYS.WM_CONCAT使用如图,将图1的结果变成图2的结果,使用函数 WMSYS.WM_CONCAT 即可。查询语句需要配合使用group byselect aa,wmsys.wm_concat(t1.name) from ( select t.name,to_char(t....

    1、oracle函数 WMSYS.WM_CONCAT的使用

    如图,将图1的结果变成图2的结果,使用函数 WMSYS.WM_CONCAT 即可。

    查询语句需要配合使用group by

    select aa,wmsys.wm_concat(t1.name) from ( select t.name,to_char(t.createdate,'yyyy-mm-dd') aa from td_user t where t.td_conference_id = 3218 and t.status = 1 and t.createdate > to_date('2012-10-28','yyyy-mm-dd') order by createdate desc ) t1 group by t1.aa

    图1:

    1351496146_6957.jpg

    图2:

    1351496162_9880.jpg

    2、mysql 函数 GROUP_CONCAT 的使用

    完整的语法如下:

    group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

    基本查询 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200  | |3 | 500  | +------+------+ 6 rows in set (0.00 sec)

    以id分组,把name字段的值打印在一行,逗号分隔(默认) mysql> select id,group_concat(name) from aa group by id; +------+--------------------+ | id| group_concat(name) | +------+--------------------+ |1 | 10,20,20| |2 | 20 | |3 | 200,500| +------+--------------------+ 3 rows in set (0.00 sec)

    以id分组,把name字段的值打印在一行,分号分隔 mysql> select id,group_concat(name separator ';') from aa group by id; +------+----------------------------------+ | id| group_concat(name separator ';') | +------+----------------------------------+ |1 | 10;20;20 | |2 | 20| |3 | 200;500  | +------+----------------------------------+ 3 rows in set (0.00 sec)

    以id分组,把去冗余的name字段的值打印在一行, 逗号分隔

    mysql> select id,group_concat(distinct name) from aa group by id; +------+-----------------------------+ | id| group_concat(distinct name) | +------+-----------------------------+ |1 | 10,20| |2 | 20  | |3 | 200,500 | +------+-----------------------------+ 3 rows in set (0.00 sec)

    以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序 mysql> select id,group_concat(name order by name desc) from aa group by id; +------+---------------------------------------+ | id| group_concat(name order by name desc) | +------+---------------------------------------+ |1 | 20,20,10  | |2 | 20| |3 | 500,200| +------+---------------------------------------+ 3 rows in set (0.00 sec)

    需要注意的:

    a.int字段的连接陷阱

    当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来, 否则在你执行后(ExecuteScalar或者其它任何执行SQL返回结果的方法)返回的将不是一个逗号隔开的串, 而是byte[]。

    该问题当你在SQLyog等一些工具中是体现不出来的,所以很难发现。

    select group_concat(ipaddress) from t_ip返回逗号隔开的串 select group_concat(id) from t_ip 返回byte[] select group_concat(CAST(id as char)) from t_dep返回逗号隔开的串 select group_concat(Convert(id , char)) from t_dep返回逗号隔开的串

    附Cast,convert的用法: CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USINGtranscoding_name) CAST() 和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。

    这个类型 可以是以下值其中的 一个:

    BINARY[(N)] CHAR[(N)] DATE DATETIME DECIMAL SIGNED [INTEGER] TIME UNSIGNED [INTEGER]

    b.长度陷阱 用了group_concat后,select里如果使用了limit是不起作用的. 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。

    使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val是一个无符号整数: SET [SESSION | GLOBAL] group_concat_max_len = val; 若已经设置了最大长度,则结果被截至这个最大长度。

    在SQLyog中执行 SET GLOBAL group_concat_max_len = 10后,重新打开SQLyog,设置就会生效。

    展开全文
  • 本篇文章是对oracle合并列的函数wm_concat使用进行了详细的分析介绍,需要的朋友参考下
  • wm_concat函数用法

    千次阅读 2019-01-24 15:41:08
    oracle中wm_concat函数用法 今天工作中用到遇到一个问题,当一个表是用来描述一个事物时,其字段一般都是这个事物的各个属性,当我们需要获取这个事物时如果将这个表中所有属性获取(即将表中一行转换为一列) 1、原...
  • MySQL concat函数使用详解

    万次阅读 2022-02-26 16:07:33
    MySQL拼接字符串,MySQL中的concat函数,MySQL concat(),
  • 替代oralce的wm_concat函数

    万次阅读 2018-07-30 15:28:23
    wm_concat函数是oracle拼接字符串常用函数,但是这函数并不是oracle官方推荐的,估计oracle在后续更新中会悄无声息的去除,在oracle 11g之前可以使用wm_concat,但是如果拼接字符串超过3000就会报错 Ora...
  • 本文实例讲述了mysql group_concat()函数用法。分享给大家供大家参考,具体如下: group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。比较抽象,难以理解。 通俗点理解,其实是...
  • 当前位置:我的异常网» Oracle开发»类似与WMSYS.WM_CONCAT函数方法解决方法类似与WMSYS.WM_CONCAT函数方法解决方法www.myexceptions.net网友分享于:2013-01-26浏览:53次类似与WMSYS.WM_CONCAT函数方法...
  • 1. createorreplacefunctionpostgresql(p_tnamevarchar2, p_... / 函数: create or replace FUNCTION zh_concat(P1 VARCHAR2) RETURN VARCHAR2 AGGREGATE USING zh_concat_im ; 修改标红部门,可调整字段间分隔符
  • 一、CONCAT()函数 CONCAT()函数用于将多个字符串连接成一个字符串。...的返回结果 为 +----+--------+ | id | name| +----+--------+ |1 | BioCyc | +----+--------+ 1、语法及使用特点1、oracle函数 WM...
  • Oracle中的wm_concat函数用法

    万次阅读 2019-01-30 14:52:34
    但是在数据查询时候,有时候又希望将所有权利人信息一起展示,这里可能就会用到Oracle的wm_concat函数 1.示例数据 2. 示例语句 select qlrid,wm_concat(qlr) as qlr,wm_concat(qlrzjh) as qlrzjh from qlr t...
  • 字符串拼接和分离(String Aggregation Techniques)是数据处理时经常需要用到一个技术,比如需要按时间顺序拼装一个快递的运输记录,... - WM_CONCAT函数 - LISTAGG函数 - 自定义聚合函数 0.测试样例 这里介...
  • wm_concat(column)函实现字段合并 eg: cars name car num zhangsan audi 2 lisi benz 3 zhangsan bmw 1 wangwu buick 2 wangwu toyota 1 zhangsan jeep 2 select name, wmsys.wm_concat(car) ...
  • oracle wm_concat函数 用法

    千次阅读 2018-03-08 19:59:17
    首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用 准备测试数据 SQL> create table test(id number,...
  • wm_concat(distinct 字段名) 使用distinct去重即可
  • WM_CONCAT 经常使用到行转列上,早期的代码里这个函数用的会比较多,但是可惜在12c中,这个函数已经过期了:所以,在后续的开发中,不要再使用这个函数。在MOS中,Oracle也不建议客户使用这个函数,该函数为系统内部...
  • oracle wm_concat(column)函数使用详解

    千次阅读 2021-01-30 02:23:37
    oracle数据库中,使用wm_concat(column)函数,可以进行字段合并表中数据如下: 想要的结果为: 有两种实现方法第一种:使用decode和case when进行行转列先不进行case whenselect t.u_id,'语文'||t.a||'数学'||t.b||'...
  • 函数在10版本推出,可以把列值以英文逗号分隔起来并显示成一行,例子: 1.  SQL> create table test(id number,name varchar2(20));  2.  SQL> insert into test values(1,'a');  3.  SQL> insert...
  • 默认情况下,使用wm_concat和group by拼接字段时,拼接的字段顺序是无规则的。 创建测试数据: create table tb( seq number(10), remark varchar2(100), createtime date ); insert into tb(seq, remark, ...
  • Oracle wm_concat()函数

    千次阅读 2019-05-27 22:24:19
    oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并 如: shopping: ----------------------------------------- u_id goods num ---------...
  • oracle中LISTAGG()函数与wmsys.wm_concat()函数用法
  • Oracle没有WM_CONCAT函数的解决办法

    万次阅读 2022-01-05 21:07:31
    解决ORA-00904: "WMSYS"."WM_...WM_CONCAT是oracle的非公开函数,并不鼓励使用,新版本oracle并没有带此函数,需要手工加上。 1、下载 根据下方链接下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb ...
  • oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我们不知道oracle中的over函数,也不知道listagg...
  • oracle wm concat函数,用于列转行,逗号分隔
  • 参考:http://blog.csdn.net/ojerryzuo/article/details/53927057

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,612
精华内容 1,044
关键字:

wmconcat函数用法

友情链接: Hardware.rar