1

というテーブルXMLRECORDにタイプの列があります。 XMLABCD

私の記録には以下が含まれます:

<row id="100" xml:space="preserve">
  <c9>400</c9>
  <c10>4000</c10>
</row>

<row id="90" xml:space="preserve">
  <c9>324</c9>
  <c10>34</c10>
</row>

XMLRECORDクエリを使用して、この 2 つのノードを比較しようとしています

SELECT XMLRECORD 
FROM ABCD  
WHERE XMLRECORD.exist(N'/row[c9/text() < c10/text()]') = 1

SQL Server で実行すると、ASCII 比較を行う両方のレコードが表示されます。SQL Server に数値比較を強制する方法は?

4

1 に答える 1

1

xpath内で数値に変換できます:

select *
from ABCD 
where xmlrecord.exist('/row[number((c9/text())[1]) < number((c10/text())[1])]') = 1

または値を比較します。

select *
from ABCD 
where xmlrecord.value('(/row/c9/text())[1]', 'int') < xmlrecord.value('(/row/c10/text())[1]', 'int')
于 2013-10-21T06:57:05.753 に答える