Jam*_*ers 4 mysql sql t-sql sql-server
我有一个包含1列varchar值的表.如果可能的话,我正在寻找一种方法将这些值连接成一个没有循环的值.如果一个循环是解决这个问题的最有效的方法,那么我将采用这种方式,但我认为在默认为该方法之前我会要求其他选项.我还想将其保留在SQL查询中.
最终,我想做一个分裂功能的反面.
是否可以不使用循环(或游标),或者我应该使用循环来实现这一点?
编辑:因为有一个非常好的答案与如何在MySql中进行相关(与我最初的MS Sql相反),我决定重新录制,以便其他人也可以找到答案.
声明@concat varchar(max)set @concat =''
从tablename1中选择@concat = @concat + col1 +','
试试这个:
DECLARE @YourTable table (Col1 int)
INSERT INTO @YourTable VALUES (1)
INSERT INTO @YourTable VALUES (2)
INSERT INTO @YourTable VALUES (30)
INSERT INTO @YourTable VALUES (400)
INSERT INTO @YourTable VALUES (12)
INSERT INTO @YourTable VALUES (46454)
SELECT
STUFF(
(
SELECT
', ' + cast(Col1 as varchar(30))
FROM @YourTable
WHERE Col1<=400
ORDER BY Col1
FOR XML PATH('')
), 1, 2, ''
)
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
-------------------
1, 2, 12, 30, 400
(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3695 次 |
| 最近记录: |