Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 用XML赚钱_Sql Server_Xml_Casting_Currency - Fatal编程技术网

Sql server 用XML赚钱

Sql server 用XML赚钱,sql-server,xml,casting,currency,Sql Server,Xml,Casting,Currency,我有一些XML数据需要添加为货币。我尝试的每次转换都会出错 不允许从数据类型xml显式转换为____; 下面是一个简单的示例,其中包含几次失败的尝试 DECLARE @xmlstuff xml SET @xmlstuff = '3' SELECT CAST (@xmlstuff AS varchar(80)) as worksButDontCare, --CAST (@xmlstuff AS MONEY) as dollars, -- Explicit conversion f

我有一些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.

我找到的答案是作为中间步骤转换为varchar

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

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

因此,正如前面所指出的,您必须首先转换为文本,然后转换为货币

有关TSQL数据类型转换的更多信息,请参见中的转换表,+1用于

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

DECLARE @xmlstuff xml
SET @xmlstuff = '3'

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


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

如何将值
3
作为XML开始?无论您使用何种技巧,都应该同时将其作为
金钱
返回。是否打算用其中一个答案来结束此问题?