SQLserver如何动态取出XML节点数为最大节点数的值?
<root>   <row>     <id>1de3427f-4c3b-4ce1-b92f-30fd53d243d0</id>     <verifyRecordId>a380bafc-3407-4c46-8b7c-84c9dde6f6c0</verifyRecordId>     <operation>submit</operation>     <opinion />     <flowId>8db42326-bc6a-4386-9e34-1751ca419225</flowId>     <operationDate>2021-09-24 09:14:04</operationDate>     <operationEx>preset</operationEx>     <beProxyId />     <beProxy />   </row>   <row>     <id>ce8af367-43f8-43d3-ae58-cebc6b51185c</id>     <verifyRecordId>a380bafc-3407-4c46-8b7c-84c9dde6f6c0</verifyRecordId>     <operation>approve</operation>     <opinion>同意</opinion>     <flowId>f98d255a-99eb-432c-8373-e023de624f08</flowId>     <operationDate>2021-09-24 09:22:03</operationDate>     <operationEx />     <beProxyId />     <beProxy />   </row>   <row>     <id>cbe2c46a-3844-4428-a062-c0b107027663</id>     <verifyRecordId>a380bafc-3407-4c46-8b7c-84c9dde6f6c0</verifyRecordId>     <operation>approve</operation>     <opinion>同意</opinion>     <flowId>4a995f66-3963-4e7a-99db-4972268d3757</flowId>     <operationDate>2021-09-24 09:31:49</operationDate>     <operationEx />     <beProxyId />     <beProxy />   </row> </root>

XML数据类型如上,这是一个审批流的XML字段,因为各张单据的审批节点未必一致,所以我想动态的取出最下面的OperationDate的值,请问怎么才能做到?

目前我就只能定义一个变量获取节点数如何再查询,就像这样:

declare @a int select @a=Verifylog.value('count(/root/row)','INT') from Tecul_WFVerifyRecord where itemcode='PP2021092385-1' select @a select VerifyLog.query('(/root/row/operationDate)[sql:variable("@a")]') from Tecul_WFVerifyRecord where itemcode='PP2021092385-1'

然后再去转为字符串截取字段,但是这样操作只能一张一张的弄效率很低,请问有什么办法能够直接select出来的方法吗?

普普通通的len 发布于 2022-1-18 10:01
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
普普通通的lenLv3见习互助
发布于2022-1-18 10:54
select VerifyLog.value('(/root/row/operationDate)[last()]','varchar(max)') from Tecul_WFVerifyRecord where itemcode='PP2021092385-1'

这样就能动态的查出最后一行operationDate的值了

最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-1-18 10:10
  • 普普通通的len 普普通通的len(提问者) 我知道怎么查询节点的值...但我想动态查询出最下面的OperationDate
    2022-01-18 10:29 
  • Z4u3z1 Z4u3z1 回复 普普通通的len(提问者) https://www.cnblogs.com/deng779256146/p/8637304.html 参考nodes() 方法
    2022-01-18 10:52 
  • 普普通通的len 普普通通的len(提问者) 回复 Z4u3z1 我解决了,用的XPath的last,谢谢大佬
    2022-01-18 10:53 
  • 0关注人数
  • 342浏览人数
  • 最后回答于:2022-1-18 10:54
    请选择关闭问题的原因
    确定 取消
    返回顶部