首页 > 数据库技术 > 详细

Mysql+Corosync+Pacemaker+DRBD

时间:2014-04-04 15:55:55      阅读:322      评论:0      收藏:0      [点我收藏+]

目前场景是有一个兴趣爱好类型表和一个员工爱好表,员工爱好表中的爱好一列,如果这个员工有多个爱好,那么就将这些爱好放到一条记录当中,爱好之间用逗号隔开,现在需求是要将每个员工的这些爱好分隔成一条条记录查询出来,从而可以例如做员工爱好统计等应用。

爱好类型表 t_a

bubuko.com,布布扣

员工爱好表 t_b

bubuko.com,布布扣

需要的结果是

bubuko.com,布布扣

创建一个分隔字符串的表值函数

create function [dbo].[splitIDs](
    @Ids nvarchar(1000),
    @split_char nvarchar(10)
)
returns @t_id TABLE (id bigint)
as
begin
    declare @i int,@j int,@l int,@v bigint;
    set @i = 0;
    set @j = 0;
    set @l = len(@Ids);
    while(@j < @l)
    begin
       set @j = charindex(@split_char,@Ids,@i+1);
       if(@j = 0) set @j = @l+1;
       set @v = cast(SUBSTRING(@Ids,@i+1,@j-@i-1) as bigint);
       INSERT INTO @t_id VALUES(@v)
       set @i = @j;
    end
    return;
end

GO

采用下面的语句即可得到期望的结果

select 
    aid = t_a.id
    ,aname = t_a.name
    ,bid = t_b.id,t_b.name
from t_b
cross apply splitIDs(a_ids,‘,‘) tbl_Ids
INNER JOIN t_a ON tbl_Ids .id = t_a.id




Mysql+Corosync+Pacemaker+DRBD,布布扣,bubuko.com

Mysql+Corosync+Pacemaker+DRBD

原文:http://blog.csdn.net/flcandclf/article/details/22930667

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!