9

列名に「nvarchar(max) でメソッドを呼び出すことはできません」というエラーが表示される SQL クエリがあります。

      SELECT [LEARNER_COURSE_XML_TEST].[XML_EX].Query('declare namespace
      x="http://tempuri.org/cmi.xsd";] (/x:cmi/x:core/x:time_taken)') 
      AS TimeTaken FROM [LEARNER_COURSE_XML_TEST]

問題は [XML_EX].value を中心にしているようですが、列の型を変更するなど、いくつかのことを試しましたが、最終的に動けなくなりました。任意のポインタをいただければ幸いです。

4

2 に答える 2

7

XML_EXタイプのようですねnvarchar(max)。に変更してみてくださいxml

次のように、クエリでキャストすることもできます。

select  cast(lcxt.XML_EX as xml).query(...)
from    learner_course_xml_test lcxt
于 2012-06-08T10:00:18.750 に答える
2

皆さん、ご回答ありがとうございます。SQLテーブルの名前空間にアクセスできないため、複雑になりすぎていたことがわかりました。ただし、フィールド タイプを XML に変更することから始めました。Andomar に感謝します。私の解決策は以下の通りです:

SELECT [LEARNER_COURSE_XML_TEST].[XML_EX].query('data(sco/cmicore/total_time)') AS  TimeTaken FROM [LEARNER_COURSE_XML_TEST] 

これにより、希望どおりに合計時間が抽出されます。再度、感謝します。

于 2013-11-25T10:22:33.853 に答える