PRIID CHARACTER(15) NOT NULL,
BID CHARACTER(10) NOT NULL,
REF CHARACTER(15) NOT NULL,
TIME TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP,
XMLREC XML NOT NULL
存储在DB XMLREC列中的XML如下
<Root><Code>6</Code><Id>4</Id><Number>999</Number></Root>
<Root><Code>6</Code><Id>4</Id><Number>1001</Number></Root>
<Root><Code>6</Code><Id>4</Id><Number>1002</Number></Root>
<Root><Code>6</Code><Id>4</Id><Number>998</Number></Root>
我在XQUERY下面使用geeting数据:
XQUERY
let $str:= subsequence((db2-fn:sqlquery( 'SELECT XMLREC FROM LIS.TBTASK WHERE BID=1')
/Root[Code='6']),1,5)
order by $str/Root/Number
return ($str)
但是我没有按照NUMBER列的排序顺序获得结果(在NUMBER上应用了排序依据。
你可以帮助我吗?
答案 0 :(得分:0)
这应该有效:
for $str in (db2-fn:sqlquery( 'SELECT XMLREC FROM LIS.TBTASK WHERE BID=1')/Root[Code='6']),1,5)
order by xs:int($str/Number)
return ($str)
请注意,您需要至少一个for语句才能使用order by。此外,您的路径($ str / Root / Number)错误,因为$ str已经在根节点上。另外我假设你想要以数字方式而不是字符串对它进行排序,所以我添加了一个显式类型转换来使它工作。