有馬総一郎のブログ

(彼氏の事情)

2020年05月25日 00:23:19 JST - 1 minute read - SQL

SQL Server XML型メソッド value()の使い方

SQL Server XML型メソッド value()を使ってみたら、エラーを吐かれた。

select
  ( 
    select
      name
      , value 
    from
      ( 
        select
          'a' name
          , 1 value 
        union all 
        select
          'b' name
          , 2 value
      ) work 
    order by
      name for xml path ('record')
      , TYPE
  )
  .value('record/value', 'varchar') as result

XQuery [value()]: 'value()' にはシングルトン (または空のシーケンス) が必要です。型 'xdt:untypedAtomic *' のオペランドが見つかりました。とな。

select
  ( 
    select
      name
      , value 
    from
      ( 
        select
          'a' name
          , 1 value 
        union all 
        select
          'b' name
          , 2 value
      ) work 
    order by
      name for xml path ('record')
      , TYPE
  )
  .value('(record/value)[2]', 'varchar') as result
result
2

と添字を付けることで表示できた。ふうむ。

value() メソッド (xml データ型) - SQL Server | Microsoft Docs