wm_contact合并函数

wm_contact(column)是oracle10g开始使用的函数
一般外面用to_char(wm_contact(column))包装一下。数据库服务器有的设置会不支持,不用to_char()包装就会报错

wm_concat(列名)函数,能把指定的列的值,(按照group by 中指定的分隔方法),一个个用逗号链接起来

#通用用法
select id,wm_concat(test) result
from test
group by id;

# oracle有的版本不支持上面的写法,需要用to_char()包装一下
select id,to_char(wm_concat(test)) result
from test
group by id;

今天遇到两个问题,
1、有些sql函数功能比较炫,但是如果要合并的表中的数据太多的话会很影响sql执行效率。比如oracle的wm_concat。
创建客户,选择客户类型,可以多选。设计表时将客户id和客户类型id放在单独的一个子表中。
而后台查询数据给手机端时,需要将客户类型展示出来,所以就在查询列表是关联了下客户类型表,使用wm_concat函数将该客户的多个类型用douhao , 分隔开。组成一个字符串。但是当类型表中有2w条数据的时候,查询非常慢。
将该函数去掉后,查询很快。

# 用LEFT JOIN 联查wcm_concat语句,如果待处理表中的数据很多,那么查询非常慢,不推荐这么使用。最后去掉了这段代码,在类中实现了wm_concat的相似功能。有时候sql虽然是万能的,但是运用不当会影响效率
LEFT JOIN (SELECT wm_concat(to_char(cbcd.CODE_NAME)) kind_name,SALE_CUST_ID FROM SALE_CUSTOMER_KIND sck
LEFT JOIN COMM_BASE_CODE_DETAIL cbcd ON cbcd.CODE_ID=sck.KIND_ID
GROUP BY sck.SALE_CUST_ID) sss ON sss.SALE_CUST_ID=SC.SALE_CUST_ID  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值