- - PR -
SQLServer2000 FOR XML RAW の結果を列の値として使用したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-06 18:04
select columnA from tableA FOR XML RAW
で取得した結果をひとつの列として、使用したいのですが、できるのでしょうか。 やりたいイメージとしては SELECT * FROM ( select columnA from tableA FOR XML RAW ) といった感じで扱いたいのですが できるのでしょうか? よろしくお願い致します。 | ||||
|
投稿日時: 2008-03-07 14:41
こんにちは。
もう少し詳しく書いて頂けると何かアドバイスできるかもしれません。 [ メッセージ編集済み 編集者: 馬岱 編集日時 2008-03-07 14:45 ] | ||||
|
投稿日時: 2008-03-07 15:01
> 馬岱 さん
説明不足で申し訳ありません。 SELECT columnA FROM table_name FOR XML RAW と実行すると、<row columnA="01"/><row columnA="02"/><row columnA="03"/>・・・ というように結果が返ってくるのですが、 この値を、SQL関数で置換などの作業を行いたいと考えました。 SELECT REPLACE(REPLACE(仮にcolumnAとする, '<row columnA="',''),'"/>','') FROM ( select columnA from tableA FOR XML RAW ) こうすれば、「複数行を一列に表示する」ということを、 クエリーだけでできるかなと思ったのですが。。。 [ メッセージ編集済み 編集者: 未紀 編集日時 2008-03-07 15:20 ] | ||||
|
投稿日時: 2008-03-07 19:27
成程、少し勘違いをしておりました。
それについては私も経験が無いので色々調べてみたんですが、 詳しく触れられているサイトを見つけられなかったので 実際にやってみるのが早そうですね。 突っ込んだのに回答できず申し訳ありませぬ。 こちらでも手が空いたときを見計らってテストしてみますね。 | ||||
|
投稿日時: 2008-03-07 22:11
これでいけないかな。 SQL Server2005ではうまくいったんですが。 | ||||
|
投稿日時: 2008-03-11 08:48
select REPLACE(REPLACE((select columnA from t_b59_903 for XML RAW),'<row columnA="',''),'"/>','')
ご回答ありがとうございます。 こちらでもSQL Server2005 Express で試したところ、うまくいきました。 しかし、SQL Server2000 では、以下のようなエラーメッセージがでてしまいます。 サーバー : メッセージ 170、レベル 15、状態 1、行 1 行 1: 'XML' の近くに無効な構文があります。 2000では、不可能ということなのでしょうか。。。 | ||||
|
投稿日時: 2008-03-11 09:51
SQL Server 2005の新機能で、FOR XMLクエリから代入可能な値が返されるようになりました。そのため、REPLACE関数にクエリの結果を渡すことができます。今回の場合はTYPEディレクティブを設定していないので、関数にはnvarchar(max)で渡されていると思います。
一方SQL Server 2000では、ガイドラインに記されていますが、
ですので、ムリなのでしょう。 ”一般的に”って前置きに、どんな意味を含ませているのかはわかりませんが・・・。 [ メッセージ編集済み 編集者: かめたろ 編集日時 2008-03-11 09:53 ] | ||||
|
投稿日時: 2008-03-11 10:35
そうですか、残念ですが無理なようですね。
"一般的に"が気になるところですが。。。 馬岱 さん、OakBow さん、かめたろ さん どうもありがとうございました。 |
1