wm_contact合并函数

来源:互联网 发布:数据库查询怎么保存 编辑:程序博客网 时间:2024/06/04 00:27

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

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

#通用用法select id,wm_concat(test) resultfrom testgroup by id;# oracle有的版本不支持上面的写法,需要用to_char()包装一下select id,to_char(wm_concat(test)) resultfrom testgroup 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 sckLEFT JOIN COMM_BASE_CODE_DETAIL cbcd ON cbcd.CODE_ID=sck.KIND_IDGROUP BY sck.SALE_CUST_ID) sss ON sss.SALE_CUST_ID=SC.SALE_CUST_ID  
原创粉丝点击