mariadb 为什么ExtractValue()在UPDATE中失败,而在SELECT中成功?

bmvo0sr5  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(56)

当我执行此查询时...

UPDATE tbl a,
(SELECT id, EXTRACTVALUE(content, '//a[contains(text(), "View")]/@href') AS url FROM tbl) b
SET tbl.`url` = b.`url`

字符串
我看到这个错误:

Error Code: 1525
Incorrect XML value: 'parse error at line 57 pos 195: '</div>' unexpected (END-OF-INPUT wanted)'


但是当我执行这个查询时...

SELECT id, EXTRACTVALUE(content, '//a[contains(text(), "View")]/@href') AS url FROM tbl


查询成功。
为什么独立SELECT查询成功时UPDATE查询失败?

dauxcl2d

dauxcl2d1#

我也遇到了同样的问题,虽然我不知道“为什么”这个问题的答案,但我可以提供一个解决方案:将子查询的结果放入temporary table中,例如(伪代码):

CREATE TEMPORARY TABLE temp AS (SELECT id, EXTRACTVALUE(content, '//a[contains(text(), "View")]/@href') AS url FROM tbl);
    
UPDATE tbl a, temp b
SET tbl.`url` = b.`url`

字符串
你可以用这种方式引用它作为多表更新,或者使用内部连接,这两种方式似乎都很好。

相关问题