34,590
社区成员
发帖
与我相关
我的任务
分享
USE AdventureWorks
GO
DECLARE @TEST XML
SET @TEST=(SELECT TOP 1 Demographics FROM Sales.Individual)
PRINT CONVERT(NVARCHAR(MAX),@TEST)
<IndividualSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey">
<TotalPurchaseYTD>8248.99</TotalPurchaseYTD>
<DateFirstPurchase>2001-07-22Z</DateFirstPurchase>
<BirthDate>1966-04-08Z</BirthDate>
<MaritalStatus>M</MaritalStatus>
<YearlyIncome>75001-100000</YearlyIncome>
<Gender>M</Gender>
<TotalChildren>2</TotalChildren>
<NumberChildrenAtHome>0</NumberChildrenAtHome>
<Education>Bachelors </Education>
<Occupation>Professional</Occupation>
<HomeOwnerFlag>1</HomeOwnerFlag>
<NumberCarsOwned>0</NumberCarsOwned>
<CommuteDistance>1-2 Miles</CommuteDistance>
</IndividualSurvey>
DECLARE @TEST XML
SET @TEST=(SELECT TOP 1 Demographics FROM Sales.Individual)
PRINT CONVERT(NVARCHAR(MAX),@TEST)
--SELECT TotalPurchaseYTD=T.C.value('/TotalPurchaseYTD.[1]','nvarchar(20)')
--FROM @TEST.nodes('/IndividualSurvey') T(C)
SELECT TotalPurchaseYTD =
@TEST.value('(/IndividualSurvey/TotalPurchaseYTD)[1]', 'nvarchar(20)'),
BirthDate=@TEST.value('(/IndividualSurvey/BirthDate)[1]', 'DATETIME'),
MaritalStatus=@TEST.value('(/IndividualSurvey/MaritalStatus)[1]', 'nvarchar(2)')
--取得的都是空值
DECLARE @myDoc xml
SET @myDoc = '<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>'
SELECT ProdID = @myDoc.value('(/Root/ProductDescription/@ProductID)[1]', 'int' ),
ProductName=@myDoc.value('(/Root/ProductDescription/@ProductName)[1]', 'nvarchar(20)' ),
XX=@myDoc.value('(/Root/ProductDescription/Features/Warranty)[1]', 'nvarchar(20)' )
--结果如下:
ProdID ProductName XX
----------- -------------------- --------------------
1 Road Bike 1 year parts and lab
(1 行受影响)
DECLARE @TEST XML
SET @TEST=(SELECT TOP 1 Demographics FROM Sales.Individual)
PRINT CONVERT(NVARCHAR(MAX),@TEST)
--SELECT TotalPurchaseYTD=T.C.value('/TotalPurchaseYTD.[1]','nvarchar(20)')
--FROM @TEST.nodes('/IndividualSurvey') T(C)
SELECT TotalPurchaseYTD=@TEST.value('
declare namespace dd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey";
(/dd:IndividualSurvey/dd:TotalPurchaseYTD)[1]','nvarchar(20)')
/*
--------------------
8248.99
(1 行受影响)
DECLARE @TEST XML
SET @TEST = '<IndividualSurvey>
<TotalPurchaseYTD>8248.99</TotalPurchaseYTD>
</IndividualSurvey>
'
SELECT TotalPurchaseYTD =
@TEST.value('(/IndividualSurvey/TotalPurchaseYTD)[1]','decimal(18,2)') /*'nvarchar(20)')
/*
TotalPurchaseYTD
---------------------------------------
8248.99
(1 行受影响)
*/