如何解析AdventureWorks中Sales_Store表Demographics列的XML数据?
提取AdventureWorks数据库Sales_Store表Demographics列XML数据的问题
我正在学习使用AdventureWorks数据库,需要提取Sales_Store表中Demographics列的各项数据,但不知道如何拆分其中的XML元素。该列的单条记录示例如下:
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey"> <AnnualSales>800000</AnnualSales> <AnnualRevenue>80000</AnnualRevenue> <BankName>United Security</BankName> <BusinessType>BM</BusinessType> <YearOpened>1996</YearOpened> <Specialty>Mountain</Specialty> <SquareFeet>21000</SquareFeet> <Brands>2</Brands> <Internet>ISDN</Internet> <NumberEmployees>13</NumberEmployees> </StoreSurvey>
我当前使用Access,也可以切换到MySQL。尝试过用Split函数但完全无效,对应的SQL语句如下:
SELECT Split(Split(Demographics, '<')(1), '>')(0) AS AnnualSales, Split(Split(Demographics, '<AnnualRevenue>')(1), '</AnnualRevenue>')(0) AS AnnualRevenue, Split(Split(Demographics, '<BankName>')(1), '</BankName>')(0) AS BankName, Split(Split(Demographics, '<BusinessType>')(1), '</BusinessType>')(0) AS BusinessType, Split(Split(Demographics, '<YearOpened>')(1), '</YearOpened>')(0) AS YearOpened, Split(Split(Demographics, '<Specialty>')(1), '</Specialty>')(0) AS Specialty, Split(Split(Demographics, '<SquareFeet>')(1), '</SquareFeet>')(0) AS SquareFeet, Split(Split(Demographics, '<Brands>')(1), '</Brands>')(0) AS Brands, Split(Split(Demographics, '<Internet>')(1), '</Internet>')(0) AS Internet, Split(Split(Demographics, '<NumberEmployees>')(1), '</NumberEmployees>')(0) AS NumberEmployees FROM Sales_Store
也尝试了ExtractValue函数的语句,同样没有效果:
SELECT ExtractValue(Demographics, 'StoreSurvey/AnnualSales') AS AnnualSales, ExtractValue(Demographics, 'StoreSurvey/AnnualRevenue') AS AnnualRevenue, ExtractValue(Demographics, 'StoreSurvey/BankName') AS BankName, ExtractValue(Demographics, 'StoreSurvey/BusinessType') AS BusinessType, ExtractValue(Demographics, 'StoreSurvey/YearOpened') AS YearOpened, ExtractValue(Demographics, 'StoreSurvey/Specialty') AS Specialty, ExtractValue(Demographics, 'StoreSurvey/SquareFeet') AS SquareFeet, ExtractValue(Demographics, 'StoreSurvey/Brands') AS Brands, ExtractValue(Demographics, 'StoreSurvey/Internet') AS Internet, ExtractValue(Demographics, 'StoreSurvey/NumberEmployees') AS NumberEmployees FROM Sales_Store
内容的提问来源于stack exchange,提问作者HUCHR
相关产品推荐
相关产品推荐

