【发布时间】:2023-04-03 13:05:01
【问题描述】:
我正在用这个存储过程处理 xml
select
col.query('./AgreementId').value('.','uniqueidentifier') as [AgreementId],
x.query('./GrossValue').value('.','decimal(19, 4)') as [GrossValue]
into #AdvanceInvoices
from @XML.nodes('/DataFromERP/CustomObjects/Agreements/Agreement') as ref(col)
cross apply ref.col.nodes('AdvanceInvoices/AdvanceInvoice') as T(x)
问题是GrossValue,可以为空
<GrossValue></GrossValue>
而且可能会出现错误
Error converting data type nvarchar to numeric
我怎样才能让它得到 0.0 而不是错误?
编辑:
我想出了
CAST(COALESCE(NULLIF(ISNULL(x.query('./GrossValue').value('.','nvarchar(50)'),''),''),'0.0') as decimal(19,4)) as [GrossValue],
但是真的很丑
【问题讨论】:
标签: sql-server xml tsql null type-conversion