寻求一种简单的写法。。

马老虎 2010-09-29 11:58:40


CREATE TABLE #tb1
(
id INT,
NAME NVARCHAR(50)
)

INSERT INTO #tb1 ( id, NAME )VALUES ( 1, N'张一')
INSERT INTO #tb1 ( id, NAME )VALUES ( 2, N'张二')
INSERT INTO #tb1 ( id, NAME )VALUES ( 3, N'张三')
INSERT INTO #tb1 ( id, NAME )VALUES ( 4, N'张四')

SELECT NAME FROM #tb1
/*
结果:

张一
张二
张三
张四
*/

/*
我想要的结果是↓

张一/张二/张三/张四

寻求这个sql的写法。越简单越好!^^

*/
--DROP TABLE #tb1


...全文
92 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
马老虎 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sqlcenter 的回复:]

我用的是sql2000是和我的sql版本有关系吗??
--
是的
[/Quote]
OK!谢谢结贴!!
SQLCenter 2010-09-29
  • 打赏
  • 举报
回复
我用的是sql2000是和我的sql版本有关系吗??
--
是的
马老虎 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ws_hgo 的回复:]

SQL code
if object_id('tb1') is not null drop table tb1
CREATE TABLE tb1
(
id INT,
NAME NVARCHAR(50)
)

INSERT INTO tb1 ( id, NAME )VALUES ( 1, N'张一')
INSERT INTO tb1 ( id, NAME )VALUES ( ……
[/Quote]
5L和2L 意思差不多。用了个自定义函数。
谢谢啦!
马老虎 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sqlcenter 的回复:]

SQL code
CREATE TABLE #tb1
(
id INT,
NAME NVARCHAR(50)
)

INSERT INTO #tb1 ( id, NAME )VALUES ( 1, N'张一')
INSERT INTO #tb1 ( id, NAME )VALUES ( 2, N'张二')
INSERT INTO #tb1 ( id, NAME )VALUE……
[/Quote]
首先谢谢你的回答。
不过有错误:
'xml' 附近有语法错误。

我用的是sql2000是和我的sql版本有关系吗??
马老虎 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 josy 的回复:]

declare @s varchar(1000)
select @s=isnull(@s+'/','')+name from tb
select @s
[/Quote]
哦 这个不错!唯一缺点就是:declare @s nvarchar(1000)
王向飞 2010-09-29
  • 打赏
  • 举报
回复
这有这几种写法
ws_hgo 2010-09-29
  • 打赏
  • 举报
回复
if object_id('tb1') is not null drop table tb1
CREATE TABLE tb1
(
id INT,
NAME NVARCHAR(50)
)

INSERT INTO tb1 ( id, NAME )VALUES ( 1, N'张一')
INSERT INTO tb1 ( id, NAME )VALUES ( 2, N'张二')
INSERT INTO tb1 ( id, NAME )VALUES ( 3, N'张三')
INSERT INTO tb1 ( id, NAME )VALUES ( 4, N'张四')

--1函数的方法
create function dbo.FC_Str()
returns varchar(1000)
as
begin
declare @str varchar(1000)
set @str=''
select @str=@str+'/'+Name from tb1
return stuff(@str,1,1,'')
end

select distinct dbo.FC_Str() from tb1


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
张一/张二/张三/张四

(1 行受影响)
--2字符串
declare @sql varchar(100)
set @sql=''
select @sql=@sql+'/'+Name from tb1
select stuff(@sql,1,1,'')


----------------------------------------------------------------------------------------------------
张一/张二/张三/张四

(1 行受影响)
ws_hgo 2010-09-29
  • 打赏
  • 举报
回复
if object_id('tb1') is not null drop table tb1
CREATE TABLE tb1
(
id INT,
NAME NVARCHAR(50)
)

INSERT INTO tb1 ( id, NAME )VALUES ( 1, N'张一')
INSERT INTO tb1 ( id, NAME )VALUES ( 2, N'张二')
INSERT INTO tb1 ( id, NAME )VALUES ( 3, N'张三')
INSERT INTO tb1 ( id, NAME )VALUES ( 4, N'张四')


create function dbo.FC_Str()
returns varchar(1000)
as
begin
declare @str varchar(1000)
set @str=''
select @str=@str+'/'+Name from tb1
return stuff(@str,1,1,'')
end

select distinct dbo.FC_Str() from tb1


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
张一/张二/张三/张四

(1 行受影响)


SQLCenter 2010-09-29
  • 打赏
  • 举报
回复
CREATE TABLE #tb1
(
id INT,
NAME NVARCHAR(50)
)

INSERT INTO #tb1 ( id, NAME )VALUES ( 1, N'张一')
INSERT INTO #tb1 ( id, NAME )VALUES ( 2, N'张二')
INSERT INTO #tb1 ( id, NAME )VALUES ( 3, N'张三')
INSERT INTO #tb1 ( id, NAME )VALUES ( 4, N'张四')

select name = stuff((select '/'+name as [text()] from #tb1 for xml path('')),1,1,'')
/*
张一/张二/张三/张四
*/

百年树人 2010-09-29
  • 打赏
  • 举报
回复
declare @s varchar(1000)
select @s=isnull(@s+'/','')+name from tb
select @s

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧