0

SQLServer2005テーブルにXMLデータ型として定義された列があります。その列の2つのノードの順序に基づいて、このテーブルからレコードを選択する方法はありますか?たとえば、XMLには次の構造があります。

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

緯度/経度が逆の順序であるレコードがあるかどうかを確認したいと思い<longitude/>ます<latitude/>。いくつかのXPath式を試しましたが、うまくいきませんでした。

4

3 に答える 3

1

item 要素の最初の子が経度かどうかを確認できます。

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

PS SQL 2008 のジオメトリ列を使用して座標を格納することをお勧めします。

于 2009-02-23T15:43:11.513 に答える
0

関連する xsd を使用して、順序を強制できます。私はそれを参照してください私はそれを便利に照会することができます...

(更新)できるかどうかわかりません... position(name) および node/position() と同様に、適切な軸がすべて無効になっています

于 2009-02-23T15:06:38.807 に答える
0

列に関連付けられた xsd がありますが、順序は強制されません。順序を強制したいのですが、この変更を行う前に、列のいずれかが逆の順序になっているかどうかを確認したいと考えています。

于 2009-02-23T15:18:05.177 に答える