请教各位高手,name是student表里的一个字段,格式如下:
name 
张三  
李四
王五我希望用一个sql语句输出以下格式:张三-李四-王五该如何写这个sql语句,谢谢

解决方案 »

  1.   

    declare @a varchar(max) 
    set @a=''    
    select @a=@a+name+',' from student
    select @a参考:
    http://blog.csdn.net/Fibona/archive/2009/02/25/3936910.aspx
      

  2.   

    我想可以不用这样吧查询结果name 
    张三 
    李四
    王五
    再对这个Table中的内容进行“行列转换”就行我们现在是这样做的,因为如果列多时,这种方法还是可行的
      

  3.   


    select name=stuff(
    (select '-'+name  from student for xml path('')),1,1,'')
      

  4.   

    select name=stuff(
    (select '-'+name  from student for xml path('')),1,1,'')这个可以,不过好象是2005及以上版本。
      

  5.   

    if object_id('tempdb.dbo.#tb') is not null drop table tempdb.dbo.#tb
    gocreate table dbo.#tb
    (
    id  int ,
    name varchar(20),
    )insert into #tb select 1,'张三' 
    union all select 2,'李四' 
    union all select 3,'王五'select * from #tbdeclare @str varchar(8000)
    select @str='';
    select @str=@str+'-'+name from #tb
    select substring(@str,2,len(@str))
      

  6.   

    ----------------------------------------------------------------
    -- Author  :SQL77(只为思齐老)
    -- Date    :2010-03-12 11:01:33
    -- Version:
    --      Microsoft SQL Server  2000 - 8.00.194 (Intel X86) 
    -- Aug  6 2000 00:57:48 
    -- Copyright (c) 1988-2000 Microsoft Corporation
    -- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:#TB
    if object_id('tempdb.dbo.#TB') is not null drop table #TB
    go 
    create table #TB([name] varchar(4))
    insert #TB
    select '张三' union all
    select '李四' union all
    select '王五'
    --------------开始查询--------------------------
    DECLARE @NAME VARCHAR(8000)
    select @NAME=ISNULL(@NAME+'-','')+[NAME] from #TB
    SELECT @NAME
    ----------------结果----------------------------
    /* 
    张三-李四-王五(所影响的行数为 1 行)
    */
      

  7.   

    select ','+[name] from #tb for xml path('') 
      

  8.   

    请教各位高手,name是student表里的一个字段,格式如下:
    name 
    张三 
    李四
    王五我希望用一个sql语句输出以下格式:张三-李四-王五我做过  说下思路你去网上查下  :是用sql中的指针把一行行去读取name  读出来串连成一个字符串:张三-李四-王五
    到网上查下sql中的指针怎么用把 
      

  9.   

    谢谢各位的帮助,我是新手,暂时只能靠大家帮助我了,呵呵这个是能实现了但是
    请教各位高手,name是student表里的一个字段,格式如下:
    name 
    张三 
    李四
    王五
    张三
    张三我希望用一个sql语句输出以下格式:张三-李四-王五
    可以帮助我解决吗
      

  10.   

    ----------------------------------------------------------------
    -- Author  :SQL77(只为思齐老)
    -- Date    :2010-03-12 11:01:33
    -- Version:
    --      Microsoft SQL Server  2000 - 8.00.194 (Intel X86) 
    --    Aug  6 2000 00:57:48 
    --    Copyright (c) 1988-2000 Microsoft Corporation
    --    Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:#TB
    if object_id('tempdb.dbo.#TB') is not null drop table #TB
    go 
    create table #TB([name] varchar(4))
    insert #TB
    select '张三' union all
    select '李四' union all
    select '张三' union all
    select '王五'
    --------------开始查询--------------------------
    --DROP TABLE #T
    SELECT *,ID=IDENTITY(INT,1,1) INTO #T  FROM #TBDECLARE @NAME VARCHAR(8000)
    select @NAME=ISNULL(@NAME+'-','')+[NAME] 
    from #T T WHERE ID=(SELECT MIN(ID) FROM #T WHERE NAME=T.NAME) ORDER BY ID
    SELECT @NAME
    ----------------结果----------------------------
    /* 
    张三-李四-王五(所影响的行数为 1 行)
    */