我试图在进行连接时将空的xml元素替换为空值。我正在犯一些愚蠢的错误。我想区分一个空值和空值。我使用OpenXML来解析XML数据,并在代码中缺少读取基于null的参数元素的内容。Sql服务器 - 对于XML - 从元素获得空值
我正在使用服务器服务器2014.
请建议。
DECLARE @message_body XML;
DECLARE @XMLParameterData Table
(SeqID INT Identity(1,1),
ParamValue varchar(max))
DECLARE @docRef int
DECLARE @dataPath nvarchar(255)
DECLARE @mappingType int = 2 --Element-Centric mapping
Select @message_body = N'<AsyncRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ParamList> <Param>Bruce</Param>
<Param>Wa''yne</Param>
<Param>[email protected]</Param>
<Param>Coke</Param>
<Param>20000</Param>
<Param xsi:nil="true"/>
<Param></Param>
</ParamList>
</AsyncRequest>';
Set @dataPath = '/AsyncRequest/ParamList/Param'
EXEC sp_xml_preparedocument @docRef output, @message_body
INSERT INTO @XMLParameterData(ParamValue)
Select * From OpenXML(@docRef, @dataPath, @mappingType)
WITH
(
valx varchar(max) '.'
)
-- the xml document ref needs to be released ASAP
EXEC sp_xml_removedocument @docRef
SELECT * From @XMLParameterData
DECLARE @CSVString varchar(max)
SELECT @CSVString = STUFF(
(SELECT ', ' +
CHAR(34) + ParamValue + CHAR(34)
FROM @XMLParameterData
ORDER BY SeqID
FOR XML PATH('')
), 1, 1, '')
SELECT @CSVString as CSVTest
输出: - “布鲁斯”, “Wa'yne”, “[email protected]”, “可口可乐”, “20000”, “”, “”
所需的输出: - “布鲁斯”, “Wa'yne”, “[email protected]”, “可口可乐”, “20000”,NULL “”
非常感谢,它工作:-) – Karan
我的荣幸! :) – gofr1