Выберите записи из столбца XML (SQL Server 2005) на основе порядка узлов - PullRequest
0 голосов
/ 23 февраля 2009

У меня есть столбец в таблице SQL Server 2005, определенный как тип данных XML. Есть ли способ выбрать записи из этой таблицы на основе порядка двух узлов в этом столбце? Например, у нас есть следующая структура в нашем XML:

<item>
   <latitude/>
   <longitude/>
</item>

Я хочу посмотреть, есть ли записи с широтой / долготой в обратном порядке, т.е. <longitude/> затем <latitude/>. Я пробовал некоторые выражения XPath, но безуспешно.

Ответы [ 3 ]

1 голос
/ 23 февраля 2009

Вы можете проверить, является ли первый дочерний элемент элемента долготой,

SELECT COUNT(1)
FROM tblFoo
WHERE xmlCol.value('local-name((/item/*)[1])', 'varchar(max)') = 'longitude'

Скрипт тестирования

DECLARE @xml as xml
SET @xml = 
'<item>
   <longitude/>
   <latitude/>      
</item>
'
IF @xml.value('local-name((/item/*)[1])', 'varchar(max)') = 'longitude'
    PRINT 'first element is longitude'

--Output: first element is longitude

P.S. Рекомендуется использовать столбцы геометрии из SQL 2008 для хранения координат.

0 голосов
/ 23 февраля 2009

У нас есть столбец xsd, связанный с колонкой, но он не устанавливает порядок. Мы хотим навести порядок, но мы хотим увидеть, находятся ли какие-либо столбцы в обратном порядке, прежде чем вносить это изменение.

0 голосов
/ 23 февраля 2009

Ну, вы можете использовать связанный xsd для принудительного исполнения ордера. Я посмотрю, я могу запрос это удобно ...

(обновление) Я не уверен, что вы можете ... соответствующая ось отключена, как и позиция (имя) и узел / позиция ()

...