假设我的 SQL Server 表中有两行,如下所示
Id Name Address
---------------------
1 Kamal Kathmandu
2 Rahul Pokhara
我想将这两行存储为这样的单个字符串,
1,Kamal,Kathmandu@2,Rahul,Pokhara
假设我的 SQL Server 表中有两行,如下所示
Id Name Address
---------------------
1 Kamal Kathmandu
2 Rahul Pokhara
我想将这两行存储为这样的单个字符串,
1,Kamal,Kathmandu@2,Rahul,Pokhara
尝试使用此查询。
declare @str varchar(max)
SET @str=STUFF((SELECT
'@'+cast(Id as varchar)+','+Name+','+Address
FROM tablename
ORDER BY '@'+Id
FOR XML PATH('')),1, 1, '')
print @str
DECLARE @xml XML = (SELECT *,'@' as Sep FROM YourTable FOR XML PATH(''))
SELECT Replace(Replace(stuff((SELECT ',' + node.value('.', 'varchar(max)')
FROM @xml.nodes('/*') AS T(node)
FOR XML PATH(''), type).value('.','varchar(max)')
, 1, 1, ''),',@,','@'),',@','');
DECLARE @ResultString varchar(max)
SET @ResultString = ''
SELECT @ResultString = @ResultString + cast(Id as varchar) + ','
+ Name + ',' + Address + '@'
FROM yourTable
SELECT @ResultString
@ResultString 将包含单个逗号分隔的字符串 1,Kamal,Kathmandu@2,Rahul,Pokhara
好吧,这是个坏主意,你做错了什么,但是......
DECLARE @badIdea nvarchar(max);
SET @badIdea = '';
SELECT @badIdea = @badIdea +
STR(Id) + N',' +
Name + N',' +
Address + N'@'
FROM SomeTable;
IF @@ROWCOUNT > 0
SET @badIdea = SUBSTRING(@badIdea, 0, LEN(@badIdea) - 1);
SELECT @badIdea;
根据您的需要,您可以通过两种方式进行操作:
使用连接,例如这里的示例:http: //blog.sqlauthority.com/2010/11/25/sql-server-concat-function-in-sql-server-sql-concatenation/。这种方法简单地涉及一个查询,例如
SELECT str(id)+','+name+','+address FROM tblName
如果您的目标是将其实际导出到文件中 - 您可以使用 SSMS 导出(我猜您正在使用它,因为您有一个 MSSQL 服务器)。右键单击查询结果(使用普通的 SELECT * FROM tblName 时),然后单击“将结果另存为...”。然后您可以将文件保存为 CSV,它将以您指定的确切格式输出文件。