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使用查询来比较这两个节点

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 回答