有没有一种方法可以使用子查询列值更新xml列?

Dimon_Tools

我试图通过来自同一表的另一个XML列的值来更新一个XML列,例如:

source:
|----|--------------------|----------------------|
|F_ID|F_DATA              |F_RESULT              |
|----|--------------------|----------------------|
|1   |<Email guid="qwe" />|<Request guid="" />   |
|----|--------------------|----------------------|
result:
|----|--------------------|----------------------|
|F_ID|F_DATA              |F_RESULT              |
|----|--------------------|----------------------|
|1   |<Email guid="qwe" />|<Request guid="qwe" />|
|----|--------------------|----------------------|

因此,我已经尝试过:

DROP TABLE IF EXISTS #F_DATA;
CREATE TABLE #F_DATA(
    F_ID BIGINT IDENTITY PRIMARY KEY,
    F_DATA XML,
    F_RESULT XML
);
INSERT INTO #F_DATA(F_DATA, F_RESULT)
VALUES('<Email guid="qwe" />', '<Request guid="" />');

UPDATE FU
SET FU.F_RESULT.modify('replace value of (Request/@guid)[1] with {sql:column("F_VALUE")}')
FROM
    #F_DATA FU
INNER JOIN 
    (SELECT
         F_ID,
         F_DATA.value('(Email/@guid)[1]', 'NVARCHAR(MAX)') 'F_VALUE'
     FROM
         #F_DATA) V ON FU.F_ID = V.F_ID;

DROP TABLE IF EXISTS #F_DATA;

一个错误

'modify'附近的语法不正确

弹出。

在处理了一段时间后,我尝试了一下(只是将纯文本设置为属性):

UPDATE #F_DATA
SET F_RESULT.modify('replace value of (Request/@guid)[1] with "myguid"');

一切都很好。

UPDATE FU
SET FU.F_RESULT.modify('replace value of (Request/@guid)[1] with "myguid"')
FROM #F_DATA FU;

尽管与上一个查询几乎相同,但仍再次显示相同的错误。

看来您只能对.modify()使用与{sql:*}参数相同的表列或变量。有没有办法处理该FROM子句?

Dimon_Tools

通过从更新的表中删除别名并从修改中删除“ {”和“}”来解决此问题。

UPDATE #F_DATA
SET F_RESULT.modify('replace value of (Request/@guid)[1] with sql:column("F_VALUE")')
FROM
    #F_DATA
        INNER JOIN
            (SELECT
                F_ID,
                F_DATA.value('(Email/@guid)[1]', 'NVARCHAR(MAX)') 'F_VALUE'
            FROM
                #F_DATA
            ) V ON #F_DATA.F_ID = V.F_ID
;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以使Excel VBA中的查询列动态化?

来自分类Dev

有没有一种方法可以使用ArrayAdapter更新多个TextView?

来自分类Dev

有没有一种方法可以使用C#中的OpenXml库固定列的宽度?

来自分类Dev

有没有一种方法可以使用conv()在MATLAB中执行按列卷积?

来自分类Dev

有没有一种方法可以使用groupby.sum并保留其他列?

来自分类Dev

有没有一种方法可以在一个查询中使用单独的递增值更新行组

来自分类Dev

有没有一种方法可以使用merge语句将此查询转换为Oracle查询?

来自分类Dev

有没有一种方法可以使SQL NOT IN查询更快?

来自分类Dev

有没有一种方法可以使SQLAlchemy预编译查询?

来自分类Dev

有没有一种方法可以使用System.Linq.Dynamic查询类型

来自分类Dev

有没有一种方法可以使SQL日志使用CloudSQL查看/优化我的查询

来自分类Dev

有没有一种方法可以使用Visual Studio进行符合SQL标准的查询?

来自分类Dev

有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

来自分类Dev

有没有一种方法可以使用媒体查询来使文本显得更小?

来自分类Dev

有没有一种方法可以使用wbemtest导出WMI查询的结果?

来自分类Dev

有没有一种方法可以使用liquibase-maven-plugin实际执行DDL更新?

来自分类Dev

有没有一种方法可以使用表变量作为联合更新的源?

来自分类Dev

有没有一种方法可以使用CSS在xml表格中引用类?

来自分类Dev

有没有一种方法可以使用Sass缩短此CSS?

来自分类Dev

有没有一种方法可以使TextView使用Spinner样式?

来自分类Dev

有没有一种方法可以使用JavaScript发送CoAP命令?

来自分类Dev

有没有一种方法可以使用Moment JS验证时间?

来自分类Dev

有没有一种方法可以使jQuery的.on()函数与promises配合使用?

来自分类Dev

有没有一种方法可以使用IPython隐藏显示的对象?

来自分类Dev

有没有一种方法可以使用javascript阻止javascript?

来自分类Dev

有没有一种方法可以使用c ++实时阅读文本?

来自分类Dev

有没有一种方法可以使GitLab缓存被使用而不被写入?

来自分类Dev

有没有一种方法可以使用多个值?

来自分类Dev

有没有一种方法可以使用Python从目录创建jar?

Related 相关文章

  1. 1

    有没有一种方法可以使Excel VBA中的查询列动态化?

  2. 2

    有没有一种方法可以使用ArrayAdapter更新多个TextView?

  3. 3

    有没有一种方法可以使用C#中的OpenXml库固定列的宽度?

  4. 4

    有没有一种方法可以使用conv()在MATLAB中执行按列卷积?

  5. 5

    有没有一种方法可以使用groupby.sum并保留其他列?

  6. 6

    有没有一种方法可以在一个查询中使用单独的递增值更新行组

  7. 7

    有没有一种方法可以使用merge语句将此查询转换为Oracle查询?

  8. 8

    有没有一种方法可以使SQL NOT IN查询更快?

  9. 9

    有没有一种方法可以使SQLAlchemy预编译查询?

  10. 10

    有没有一种方法可以使用System.Linq.Dynamic查询类型

  11. 11

    有没有一种方法可以使SQL日志使用CloudSQL查看/优化我的查询

  12. 12

    有没有一种方法可以使用Visual Studio进行符合SQL标准的查询?

  13. 13

    有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

  14. 14

    有没有一种方法可以使用媒体查询来使文本显得更小?

  15. 15

    有没有一种方法可以使用wbemtest导出WMI查询的结果?

  16. 16

    有没有一种方法可以使用liquibase-maven-plugin实际执行DDL更新?

  17. 17

    有没有一种方法可以使用表变量作为联合更新的源?

  18. 18

    有没有一种方法可以使用CSS在xml表格中引用类?

  19. 19

    有没有一种方法可以使用Sass缩短此CSS?

  20. 20

    有没有一种方法可以使TextView使用Spinner样式?

  21. 21

    有没有一种方法可以使用JavaScript发送CoAP命令?

  22. 22

    有没有一种方法可以使用Moment JS验证时间?

  23. 23

    有没有一种方法可以使jQuery的.on()函数与promises配合使用?

  24. 24

    有没有一种方法可以使用IPython隐藏显示的对象?

  25. 25

    有没有一种方法可以使用javascript阻止javascript?

  26. 26

    有没有一种方法可以使用c ++实时阅读文本?

  27. 27

    有没有一种方法可以使GitLab缓存被使用而不被写入?

  28. 28

    有没有一种方法可以使用多个值?

  29. 29

    有没有一种方法可以使用Python从目录创建jar?

热门标签

归档