我想使用XML值函数从XML提取值。在这种情况下,值的路径存储在变量中。检查以下脚本
DeclARE @keyPathNg NVARCHAR(max)
DeclARE @xml_col XML
SET @keyPathNg = '/note/to/text()'
SET @xml_col = '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Dont forghttps://stackoverflow.com/questions/10408445/the-argument-1-of-the-xml-data-type-method-value-must-be-a-string-literalet me this weekend!</body></note>'
select @xml_col.value('(sql:variable("@keyPathNg"))[1]','nvarchar(max)') ;
给出输出:
/note/to/text()
但是,输出应为Tove
当使用硬编码路径而不是使用以下查询的变量时,我能够成功提取值。
select @xml_col.value('(/note/to/text())[1]','varchar(max)')
如前所述,在我的情况下,路径存储在变量中,请提出建议。
我已经在堆栈溢出The argument 1 of the XML data type method "value" must be a string literal上阅读了此答案,但是经检查,我没有将变量的值作为输出,也许我错过了一些东西。