我是SQL编写的新手,非常希望在这个问题上得到帮助。 :)
我正在尝试将整行数据选择为一个字符串,最好用空格或逗号分隔。我希望以一种通用的方式实现这一目标,而不需要了解表中列的具体信息。
我想做的是这样的:
DECLARE @MyStringVar NVARCHAR(MAX) = ''
@MyStringVar = SELECT * FROM MyTable WHERE ID = @ID AS STRING
但是我最终做的是这样的:
DECLARE @MyStringVar = ''
DECLARE @SecificField1 INT
DECLARE @SpecificField2 NVARCHAR(255)
DECLARE @SpecificField3 NVARCHAR(1000)
...
SELECT @SpecificField1 = Field1, @SpecificField2 = Field2, @SpecificField3 = Field3 FROM MyTable WHERE ID = @ID
SELECT @StringBuilder = @StringBuilder + CONVERT(nvarchar(10), @Field1) + ' ' + @Field2 + ' ' + @Field3
糟糕。:(
我看到一些人发布了关于COALESCE函数的内容,但我没有看到任何人在不使用特定列名的情况下使用它。
此外,我在想,也许有一种方法可以动态地使用列名,通过获取它们:
SELECT [COLUMN_NAME] FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'MyTable'
看起来这似乎不应该那么复杂。:(
我的方法目前可以使用,但提前感谢任何能指向更好解决方案的人。:)
编辑: 已经修复,感谢所有回答的人。:)