繁体   English   中英

将XML转化为金钱

[英]Cast XML to money

我有一些XML数据需要加为货币。 我尝试的每次转换都会出现错误

不允许从数据类型xml到____的显式转换。

这是一个简单的示例,其中包含几次失败的尝试。

DECLARE @xmlstuff xml

SET @xmlstuff = '3'

SELECT 
   CAST (@xmlstuff AS varchar(80)) as worksButDontCare,
   --CAST (@xmlstuff AS MONEY) as dollars, -- Explicit conversion from data type xml to money is not allowed.
   --CAST (@xmlstuff AS NUMERIC) as number, -- Explicit conversion from data type xml to numeric is not allowed.
   --CONVERT (decimal(18,2),@xmlstuff ) AS cd1_feeAmount, -- Explicit conversion from data type xml to decimal is not allowed.

TSQL不允许从xml直接转换为任何数字类型。

因此,正如@incircuitous指出的那样,您将必须先转换为文本,然后转换为Money

有关TSQL数据类型转换的更多信息,请查找MSDN上的大表

MSDN中的转换表确实对参考很有用, @GabrielRainha +1。

为了从XML数据类型中获取价值,我建议研究XML特定的方法,即针对这种特殊情况的value()

DECLARE @xmlstuff xml
SET @xmlstuff = '3'

SELECT @xmlstuff.value('.', 'money') as dollars

SQL小提琴

value()的第二个参数是返回值的数据类型。 第一个参数是XQuery表达式,用于在XML结构中定位值。 假设您在XML中没有任何结构-仅是值,因此您希望可以直接使用CAST将其转换为值-,您始终可以通过. 作为第一个参数。

我发现的答案是转换为varchar作为中间步骤。

CAST ((CAST (@xmlstuff AS varchar(80))) AS MONEY)  AS xmlToVarcharToMoney

暂无
暂无

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

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