2

XML ドキュメントから値を選択しようとしていますが、一部は 10 進値ですが、XML データ フィードでは小数点ではなくカンマで区切られてい2,05ます2.05。これがドイツの 10 進数の書き方だと思います。

とにかく、Error converting data type nvarchar to numericそれらを選択しようとするとエラーが発生し、ソース データの前処理を行わずにこのクエリを機能させる方法があることを期待していました。

DECLARE @XmlDoc INT
DECLARE @XmlData VARCHAR(MAX) 

SET @XmlData = '<xml><sample><decvalue>2,05</decvalue></sample></xml>'

EXEC sp_xml_preparedocument @XmlDoc OUTPUT, @XmlData

SELECT *
FROM OPENXML(@XmlDoc,'/xml/sample',2)                     
WITH (decvalue DECIMAL(10,2) 'decvalue')
4

1 に答える 1

1

これを試してみてください -

クエリ:

DECLARE @XmlData XML 
SELECT @XmlData = '<xml><sample><decvalue>2,05</decvalue></sample></xml>'

SELECT CAST(REPLACE(t.c.value('decvalue[1]', 'VARCHAR(10)'), ',', '.') AS DECIMAL(10,2))
FROM @XmlData.nodes('/xml/sample') t(c)

出力:

2.05
于 2013-05-27T05:05:58.583 に答える