У меня есть таблица, как показано ниже:Как выбрать значение из столбца XML в таблицы SQL
CREATE TABLE [dbo].[testdb](
[Id] [int] NOT NULL,
[Description] [nvarchar](4000) NULL,
CONSTRAINT [PK_testdb] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
А вот значение:
INSERT INTO [TempTestDb].[dbo].[testdb]
([Id]
,[Description])
VALUES
(<Id, int,>
,'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<retail:customerAttribute xmlns:core="http://www.ctor.com/core" xmlns:hta="http://docs.oasis-open.org/ns/bp4people/ws-humantask/api/200803" xmlns:htd="http://docs.oasis-open.org/ns/bp4people/ws-humantask/200803" xmlns:htt="http://docs.oasis-open.org/ns/bpel4people/ws-humantask/types/200803" xmlns:ns11="http://www.enactor.com/addressLookup/service" xmlns:ns13="http://www.ctor.com/retail/restaurantTableStatus/service" xmlns:ns4="http://www.enactor.com/crm" xmlns:ns5="http://www.ctor.com/retail/storedRetailTransaction/service" xmlns:ns7="http://www.enactor.com/retail/storedRestaurantSaleTransaction/service" xmlns:ns8="http://www.ctor.com/crm/customerLoyalty/service" xmlns:retail="http://www.ctor.com/retail" xmlns:sref="http://docs.oasis-open.org/wsbpel/2.0/serviceref" xmlns:tools="http://www.ctor.com/tools" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<retail:optionPathId>NEAREST_STORE</retail:optionPathId>
<retail:optionSetId type="customerAttributeSet" optionSetId="NEAREST_STORE">
<retail:groupId groupHierarchyId="All" groupTypeId="region">All</retail:groupId>
</retail:optionSetId>
<retail:dataType>STRING</retail:dataType>
<retail:lastUpdated>2015-03-13T09:40:59.333Z</retail:lastUpdated>
<retail:value id="NEAREST_STORE">
<retail:stringValue>001</retail:stringValue>
</retail:value>
<retail:customerId>2600009991693</retail:customerId>
</retail:customerAttribute>
')
GO
Я пытаюсь выбрать значение «розничной торговли: строковое значение'. Запрос, который я пытаюсь написать, кажется, не работает. Если кто-нибудь может мне посоветовать, пожалуйста.
Мой запрос на выборку:
SELECT TOP 1000 [Id]
,[Description].value('(/retail:value/retail:stringValue/node())[1]', 'nvarchar(max)') as test
FROM [TempTestDb].[dbo].[testdb]
Если это XML, он похож на XML, quacks, как XML, - почему ** он не хранится ** как 'XML' ??? –