gpt4 book ai didi

sql - 我可以清理这个 XML 查询吗?

转载 作者:行者123 更新时间:2023-12-04 05:36:35 24 4
gpt4 key购买 nike

这是我目前使用的查询:

DECLARE @Index AS INT
SET @Index = 1
SELECT
auditId,
parameters.value('(params/param[position()=sql:variable("@Index")]/node())[1]', 'nvarchar(256)') AS value,
parameters.value('(params/param[position()=sql:variable("@Index")]/@entityId)[1]', 'nvarchar(256)') AS entityId,
parameters.value('(params/param[position()=sql:variable("@Index")]/@entityType)[1]', 'bigint') AS entityType,
parameters.value('(params/param[position()=sql:variable("@Index")]/@localizable)[1]', 'bit') AS localizable
FROM
audit

我的审计表包含一个参数 XML 节点,如下所示:

用户名
计算机名

我想知道是否有办法摆脱多余的 parameters.value('(params/param[position()=sql:variable("@Index")]部分,也许把它作为一个连接?

最佳答案

您可以使用 cross apply 来简化一点.

SELECT
auditId,
T.N.value('.', 'nvarchar(256)') AS value,
T.N.value('@entityId', 'nvarchar(256)') AS entityId,
T.N.value('@entityType', 'bigint') AS entityType,
T.N.value('@localizable', 'bit') AS localizable
FROM audit
CROSS APPLY parameters.nodes('/params/param[sql:variable("@Index")]') AS T(N)

关于sql - 我可以清理这个 XML 查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11846883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com