我的代码:
2, 2, 2, 4,
返回DECLARE @CHARS VARCHAR(100) = ''
SELECT @CHARS = ', ' + @CHARS + name -- <---CODE OF INTEREST
FROM #t1
SELECT @CHARS
。一切都很好。
但是,当我更改上面的代码时,首先附加逗号和空格:
, , , , 2224
它返回, 2, 2, 2, 4
。它不应该返回'<a http://localhost/users-data/activate/.php?id='.$id.'>'
吗?
答案 0 :(得分:1)
第二个公式的逻辑是:对于每个记录,它将字符串附加到@CHARS的右侧
假设你有
insert into #t1 values (1,'2'), (6,'3'), (6,'4'), (1,'5')
使其更清晰
对于第一行,它返回", 2"
对于第二行,您@CHARS将为", "
+ ", 2"
+&#34; 3&#34;
对于第三行,@ CHARS为", , 23"
因此将@CHARS设置为", "
+ ", , 23"
+ "4"
尝试以下查询,了解正在进行的操作:
DECLARE @CHARS VARCHAR(100) = ''
SELECT top 1 @CHARS = ', ' + @CHARS + name -- <---CODE OF INTEREST
FROM #t1
print @CHARS
go
Result: , 2
--------------------------
DECLARE @CHARS VARCHAR(100) = ''
SELECT top 2 @CHARS = ', ' + @CHARS + name -- <---CODE OF INTEREST
FROM #t1
print @CHARS
go
Result: , , 23
----------------------
DECLARE @CHARS VARCHAR(100) = ''
SELECT top 3 @CHARS = ', ' + @CHARS + name -- <---CODE OF INTEREST
FROM #t1
print @CHARS
go
Result: , , , 234