请看下面的SQL。谁能解释这种奇怪的行为?感谢任何提示,我不知道为什么它的工作方式不同。我想使用域(用户定义)类型,但它无法正常工作,你可以看到 - 十进制数是四舍五入的。
CREATE TYPE [dbo].[QTY] FROM decimal(18, 3) NULL
GO
DECLARE @XMLDATA xml=N'<Table><Row Value="42.5" /></Table>';
DECLARE @HDOC INT;
EXEC sp_xml_preparedocument @HDOC OUTPUT, @XMLDATA;
-- this returns 43
SELECT * FROM OPENXML(@HDOC, 'Table/Row') WITH (
Value QTY
);
-- this returns 42.500
SELECT * FROM OPENXML(@HDOC, 'Table/Row') WITH (
Value DECIMAL(18,3)
);
EXEC sp_xml_removedocument @HDOC;
GO