SQL Server将NULL转换为select*中的空字符串

Mar*_*oDS 0 xml sql sql-server isnull null-coalescing

我需要执行以下操作:

 SELECT * FROM [MY_TVF](9186)
 FOR XML AUTO, ELEMENTS
Run Code Online (Sandbox Code Playgroud)

并用NULL空字符串替换所有值''以将它们包含在XML中.我知道我可以xsi:nil="true"通过设置吐出带有属性的元素ELEMENTS XSINIL,但我不希望这样.

我发现了这个问题:将NULL转换为空字符串SQL Server,答案说我可以使用ISNULL()我的查询.我试过这样:

ISNULL((SELECT * FROM [MY_TVF](9186)),'')
FOR XML AUTO,ELEMENTS
Run Code Online (Sandbox Code Playgroud)

但我无法让它发挥作用.我收到以下错误:

消息102,级别15,状态1,行1','附近的语法不正确.

我该怎么做才能简单地用NULL空字符串替换所有值,以便它们包含在XML中?

编辑

无法替换*按列名称.我们使用TVF有一个原因,大约有40列,它们可能会随着时间而改变.我的查询只是选择所有内容并将其作为XML返回.

Dev*_*Dev 5

我删除了我以前的答案,这是最新的答案:

Declare @ColName as Varchar(max)
SEt @ColName=''
SELECT  @ColName= COALESCE( @ColName + ' ISNULL(' +c.name + ','''') ','', '') +
c.name + ', ' 
FROM sysobjects o
JOIN syscolumns c ON o.id = c.id
WHERE o.xtype = 'U'
AND (o.name ='tbName')
SEt @ColName=  ( 'Select ' + SUBSTRING(@ColName,0,LEN(@ColName)-1) + ' FROM tbName')
print @colname
EXEC(@ColName)
Run Code Online (Sandbox Code Playgroud)