sqlserver怎么把一个表中按分号隔开的字符串分成多行放在一个临时表中呢? 10

这个表是一个帖子版区表,第一列是版区id,最后一列是版区负责人,主要列有:版区id版区负责人id6150414;11151151567150414;1115115157有... 这个表是一个帖子版区表,第一列是版区id,最后一列是版区负责人,
主要列有:
版区id 版区负责人id
6 150414;1115115156
7 150414;1115115157
有一个人员表,有人员id和人员姓名,和这个表联合查询
最后想形成的表结构是
版区id 版区负责人姓名
6 张三、李四
7 张三、王五

都有什么思路可以实现呢?谢谢大家
展开
 我来答
handangaoyang
2014-06-17 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:911万
展开全部
  1. 分割“版区负责人Id”,使其结果为

    版区Id    版区负责人Id

    6            123

    6            456

    6            789

    (这里,我想来想去,只有使用零时表+游标来实现,个人没有想到更好的方法)


    CREATE FUNCTION [dbo].[fun_Split]
    (
      @str VARCHAR(MAX) ,
      @split VARCHAR(10)
    )
    RETURNS TABLE
    AS 
    RETURN
    (SELECT B.id FROM      ( SELECT    [value] = CONVERT(XML , '<v>' + REPLACE(@str , @split , '</v><v>')
                                + '</v>')
                    ) A
          OUTER APPLY ( SELECT  id = N.v.value('.' , 'varchar(100)')
                        FROM    A.[value].nodes('/v') N ( v )
                      ) B
        )
    GO
    --2005以及以上的版本支持这种分割写法。
  2. 用xml path,把数据搞成你所要的结果

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式