SQL Server 2008を使用しており、比較的新しいSQLです。解析されたxmlデータから値を持つ新しい列を作成します
データ型がxml
の列を含むテーブルがあります。この列のXMLは、顧客のレシートのためのレストラン情報が含まれています
<order>
<Check>
<CheckHeader>
<CheckNumber>279084</CheckNumber>
<ServerNumber>186</ServerNumber>
<ServerName>ServerName</ServerName>
<CheckTotal>8.95</CheckTotal>
</CheckHeader>
</Check>
はここにいくつかの研究を行った後、私は<CheckTotal>
つまり、私が気になる情報を解析する方法を学びました:
SELECT
order_xml.value('(/order//CheckTotal/node())[1]', 'nvarchar(max)') as CheckTotal
FROM
CheckTable
IこのCheckTable
テーブル内の新しい列にこのように解析されたCheckTotal
の値を追加するにはどうすればいいですか(もちろん、CheckTotal
が適切な行と一致することを確認してください)。
マイCheckTable
表は次のようになります。
私はすでに何をしましたか?
私は新しい列を追加するためにテーブルを変更しました。の値と解析されたCheckNumber
の値を追加した@temptTb
を作成しようとしました。私はCheckNumber
の値を解析して、新しいカラムを更新するためにこれらの2つのテーブルを結合するときに、に基づいてCheckNumber
に基づいて一致させることを保証しようとしています...もちろん、データセットCheckNumber
は再利用され、再利用されます。
このような解決策が存在することを願っておりますが、CheckTable
テーブルの新しい列に、すぐに解析されたxml CheckTotal
の値を直接追加できます。
それは本当にうまくいった!好奇心の外に - CheckXml.Value関数内で、 'decimal(18,2)'は何をするのですか? –
@BrianP: '' XML要素に含まれる値をその特定のデータ型に変換します。 '.value()'の呼び出しが実際に 'decimal(18,2)'の値を返します。 –