select name=stuff( (select '-'+name from student for xml path('')),1,1,'')
select name=stuff( (select '-'+name from student for xml path('')),1,1,'')这个可以,不过好象是2005及以上版本。
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))
---------------------------------------------------------------- -- 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 行) */
select ','+[name] from #tb for xml path('')
请教各位高手,name是student表里的一个字段,格式如下: name 张三 李四 王五我希望用一个sql语句输出以下格式:张三-李四-王五我做过 说下思路你去网上查下 :是用sql中的指针把一行行去读取name 读出来串连成一个字符串:张三-李四-王五 到网上查下sql中的指针怎么用把
谢谢各位的帮助,我是新手,暂时只能靠大家帮助我了,呵呵这个是能实现了但是 请教各位高手,name是student表里的一个字段,格式如下: name 张三 李四 王五 张三 张三我希望用一个sql语句输出以下格式:张三-李四-王五 可以帮助我解决吗
---------------------------------------------------------------- -- 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 行) */
set @a=''
select @a=@a+name+',' from student
select @a参考:
http://blog.csdn.net/Fibona/archive/2009/02/25/3936910.aspx
张三
李四
王五
再对这个Table中的内容进行“行列转换”就行我们现在是这样做的,因为如果列多时,这种方法还是可行的
select name=stuff(
(select '-'+name from student for xml path('')),1,1,'')
(select '-'+name from student for xml path('')),1,1,'')这个可以,不过好象是2005及以上版本。
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))
-- 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 行)
*/
name
张三
李四
王五我希望用一个sql语句输出以下格式:张三-李四-王五我做过 说下思路你去网上查下 :是用sql中的指针把一行行去读取name 读出来串连成一个字符串:张三-李四-王五
到网上查下sql中的指针怎么用把
请教各位高手,name是student表里的一个字段,格式如下:
name
张三
李四
王五
张三
张三我希望用一个sql语句输出以下格式:张三-李四-王五
可以帮助我解决吗
-- 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 行)
*/