繁体   English   中英

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

[英]SQL Server convert NULL to empty string in select *

我需要执行以下操作:

 SELECT * FROM [MY_TVF](9186)
 FOR XML AUTO, ELEMENTS

并将所有NULL值替换为空字符串''以将其包括在XML中。 我知道我可以通过设置ELEMENTS XSINIL来使用xsi:nil="true"属性吐出元素,但是我不想要那样。

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

ISNULL((SELECT * FROM [MY_TVF](9186)),'')
FOR XML AUTO,ELEMENTS

但是我无法正常工作。 我收到以下错误:

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

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

编辑

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

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

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)

摆脱SELECT *的习惯SELECT *

看看是否可行。

SELECT Col1,Col2,Col3,Col4,Col5
FROM
(
SELECT 
ISNULL(Col1,'') Col1,
ISNULL(Col2,'') Col2,
ISNULL(Col3,'') Col3,
ISNULL(Col4,'') Col4,
ISNULL(Col5,'') Col5
FROM [MY_TVF](9186)
) T
FOR XML AUTO,ELEMENTS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM