gpt4 book ai didi

sql - 循环通过 xml 然后更新 SQL 中的 xml 变量

转载 作者:数据小太阳 更新时间:2023-10-29 02:21:45 25 4
gpt4 key购买 nike

我的 xml 看起来像 ff:

<root>
<TemplateQuestion>
<Row rfqID="1" rftID="1" questionDesc="Question 1" responseType="1" rfqDisplayOrder="1" deletedBit="0" />
<Row rfqID="2" rftID="1" questionDesc="Question 2" responseType="2" rfqDisplayOrder="2" deletedBit="0" />
<Row rfqID="3" rftID="1" questionDesc="Question 3" responseType="3" rfqDisplayOrder="3" deletedBit="0" />
</TemplateQuestion>
</root>

现在我的目标是让 rfqID 前面有字母“q”。所以结果应该像 ff:

<root>
<TemplateQuestion>
<Row rfqID="q1" rftID="1" questionDesc="Question 1" responseType="1" rfqDisplayOrder="1" deletedBit="0" />
<Row rfqID="q2" rftID="1" questionDesc="Question 2" responseType="2" rfqDisplayOrder="2" deletedBit="0" />
<Row rfqID="q3" rftID="1" questionDesc="Question 3" responseType="3" rfqDisplayOrder="3" deletedBit="0" />
</TemplateQuestion>
</root>

我通过这样做实现了这一目标:

    declare @xml XML
set @xml = (select dbo.udfGetXMLVal(1))

declare @nodeCount int
declare @i int
declare @qid nvarchar(20)

set @i = 1
select @nodeCount = @xml.value('count(/root/TemplateQuestion/Row/@rfqID)','int')
while(@i <= @nodeCount)
begin
select @qid = x.value('@rfqID[1]', 'VARCHAR(20)')
from @xml.nodes('/root/TemplateQuestion/Row[position()=sql:variable("@i")]') e(x)
set @qid = 'q' + @qid
select @qid

Set @xml.modify('replace value of (/root/TemplateQuestion/Row/@rfqID)[1] with sql:variable("@qid")')

set @i = @i + 1
end

我在使用这条线时遇到问题:

Set @xml.modify('replace value of (/root/TemplateQuestion/Row/@rfqID)[1] with sql:variable("@qid")')

如何将 [1] 替换为变量 @i?当我尝试使用 sql:variable 时,出现一些字符串文字错误。

如果您能提供任何帮助,我们将不胜感激。谢谢

最佳答案

"How can I replace the [1] to the variable @i? I get some error with string literals when I try to use sql:variable"

你可以这样做(在 SQL Server 2008R2 中测试和工作):

Set @xml.modify('
replace value of ((/root/TemplateQuestion/Row/@rfqID)[sql:variable("@i")] )[1]
with sql:variable("@qid")
')

关于sql - 循环通过 xml 然后更新 SQL 中的 xml 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448656/

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