gpt4 book ai didi

sql - 更新中不允许修复集合返回函数

转载 作者:行者123 更新时间:2023-12-05 03:54:27 25 4
gpt4 key购买 nike

升级到 Postgres 12 语句后

update temprid set
ContactFirstName =unnest(xpath(
'/E-Document/Document/DocumentParties/BuyerParty/ContactData/ContactFirstName/text()',x))::text,
yhik =unnest(xpath(
'/E-Document/Document/DocumentItem/ItemEntry/BaseUnit/text()',x))::text
from t

抛出错误

set-returning functions are not allowed in UPDATE

如何解决这个问题?在 Postgres 9.1 中它起作用了。我在这里阅读了类似的答案,但他们建议完全覆盖声明。也许只是简单的改变使这个声明有效?

如果 xpath 返回多个值,结果应该是 xpath 表达式的任何值

更新

我按照答案试了

update temprid set
ContactFirstName =xpath(
'/E-Document/Document/DocumentParties/BuyerParty/ContactData/ContactFirstName/text()',x)[1]::text

但是报错

ERROR:  syntax error at or near "["
LINE 3: .../BuyerParty/ContactData/ContactFirstName/text()',x)[1]::text

最佳答案

简单替换

SET col = unnest(array_value)

SET col = array_value[1]

在您的情况下,您必须使用一对额外的括号,因为 array_value 是一个表达式:

SET ContactFirstName =
(xpath(
'/E-Document/Document/DocumentParties/BuyerParty/ContactData/ContactFirstName/text()',
x)
)[1]

关于sql - 更新中不允许修复集合返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60993975/

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