把一列拼接成字符串

blncle 2012-03-20 09:37:15
select id from A
结果为
1
2
3
4
我现在想结果为1,2,3,4

在sqlserver2005中,这个该怎么写呢?请教,谢谢啦!
...全文
139 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-03-20
  • 打赏
  • 举报
回复
因为sql语句是
SELECT * FROM #T WHERE tid IN(1,2,3,4)
结果当然是1,2,3,4
EnForGrass 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 somethingjack 的回复:]

引用 7 楼 chinajiyong 的回复:

引用 5 楼 blncle 的回复:

完整语句是这样的: select * from b where b.id in (select id from A)

我想把括号里的变为1,2,3,4

不声明变量可以吗,不然在sql中无法直接运行

SQL code

CREATE TABLE #T
(
tid INT
)……
[/Quote]
因为他查询的就是1,2,3,4啊
SELECT * FROM #T WHERE tid IN(1,2,3,4)
EnForGrass 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 somethingjack 的回复:]

引用 7 楼 chinajiyong 的回复:

引用 5 楼 blncle 的回复:

完整语句是这样的: select * from b where b.id in (select id from A)

我想把括号里的变为1,2,3,4

不声明变量可以吗,不然在sql中无法直接运行

SQL code

CREATE TABLE #T
(
tid INT
)……
[/Quote]
因为他查询的就是1,2,3,4啊
SELECT * FROM #T WHERE tid IN(1,2,3,4)
SomethingJack 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chinajiyong 的回复:]

引用 5 楼 blncle 的回复:

完整语句是这样的: select * from b where b.id in (select id from A)

我想把括号里的变为1,2,3,4

不声明变量可以吗,不然在sql中无法直接运行

SQL code

CREATE TABLE #T
(
tid INT
)

INSERT INTO #T
SELECT 1 UN……
[/Quote]
貌似显示还是
1
2
3
4
EnForGrass 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 blncle 的回复:]

完整语句是这样的: select * from b where b.id in (select id from A)

我想把括号里的变为1,2,3,4

不声明变量可以吗,不然在sql中无法直接运行
[/Quote]

CREATE TABLE #T
(
tid INT
)

INSERT INTO #T
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4

DECLARE @sql VARCHAR(50)
DECLARE @value VARCHAR(50)
DECLARE @result VARCHAR(5000)
SET @sql=''
SELECT @sql=@sql+','+CAST(tid AS VARCHAR(4)) FROM #T
PRINT right(@sql,LEN(@sql)-1)
SELECT @value= '('+right(@sql,LEN(@sql)-1)+')'
set @result ='SELECT * FROM #T WHERE tid IN '+ @value
PRINT @result
EXEC(@result)
chen_ya_ping 2012-03-20
  • 打赏
  • 举报
回复
就这样写
select * from b where b.id in (select id from A)

有什么问题吗?
blncle 2012-03-20
  • 打赏
  • 举报
回复
完整语句是这样的: select * from b where b.id in (select id from A)

我想把括号里的变为1,2,3,4

不声明变量可以吗,不然在sql中无法直接运行
huangwenquan123 2012-03-20
  • 打赏
  • 举报
回复
create table #Test(id int)
insert into #Test
select 1 union all
select 2 union all
select 3 union all
select 4

select * from #Test

declare @Str varchar(100)
set @Str=''
select @Str=@Str+','+cast(id as varchar(100)) from #Test
select stuff(@Str,1,1,'')
//1,2,3,4
EnForGrass 2012-03-20
  • 打赏
  • 举报
回复

DECLARE @T TABLE
(
tid INT
)
INSERT INTO @T
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4

DECLARE @sql VARCHAR(50)
SET @sql=''
SELECT @sql=@sql+','+CAST(tid AS VARCHAR(4)) FROM @T
PRINT right(@sql,LEN(@sql)-1)
/*

(所影响的行数为 4 行)

1,2,3,4

*/

这个用不着行列转换
EnForGrass 2012-03-20
  • 打赏
  • 举报
回复

DECLARE @T TABLE
(
tid INT
)
INSERT INTO @T
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4

DECLARE @sql VARCHAR(50)
SET @sql=''
SELECT @sql=@sql+','+CAST(tid AS VARCHAR(4)) FROM @T
PRINT right(@sql,LEN(@sql)-1)
SomethingJack 2012-03-20
  • 打赏
  • 举报
回复
行列转换- - 帮顶 我SQL菜鸟 学习ING`

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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