我需要写一个查询来打印所有小于或等于1000的素数。我需要将结果打印到一行中,并使用&字符作为分隔符(而不是空格)。像这样:
2&3&5&7&11&13
这是我的代码(Number的数据类型为int,所以我需要将其更改为varchar,以便&字符可以与Number一起显示在一个单元格中:]
with temp as
(select 2 as Number
union all
select Number + 1 from temp where Number<1000)
, temptwo as
(select * from temp t1
where NOT EXISTS
(select 1 from temp t2
where t1.Number > t2.Number
and t1.Number % t2.Number = 0))
, tempthree as
(select Cast(Number AS Varchar) as Number from temptwo)
select
STUFF((SELECT '&' + Number
FROM tempthree tt
WHERE tt.Number = t.Number
FOR XML PATH('')), 1, 1, '')
FROM tempthree t
OPTION (MAXRECURSION 0)
但是它实际上不起作用。我不知道是什么问题?到目前为止,它运行良好:
with temp as
(select 2 as Number
union all
select Number + 1 from temp where Number<1000)
, temptwo as
(select * from temp t1
where NOT EXISTS
(select 1 from temp t2
where t1.Number > t2.Number
and t1.Number % t2.Number = 0))
select Cast(Number AS Varchar) as Number from temptwo
OPTION (MAXRECURSION 0)
但是它只打印出这样的内容:
2
3
5
7
11
13
...
但这不是我想要的。谁能帮忙?
您的方法可以确定质数。您只是缺少字符串聚合。