1

おそらく答えるのは本当に簡単な質問ですが、私の人生ではどこにも見つけることができません。

FOR XML パスを使用して、データベースから選択リスト オプションを構築しようとしています。これまでのところ、私はこれを持っています:

SELECT ID AS 'option/@value', Name AS [option]
FROM MyTable
FOR XML Path('')

これは私にこれを得る:

<option value="1">Item 1</option><option value="2">Item 2</option>... and so on

はい、非常に単純なことですが、ここで、ID が 1 である場合にどのオプションが選択されているかを設定したいと思います。したがって、これは一度だけ発生するはずです。だから私はこれを追加します:

SELECT 
    ID AS 'option/@value', Name AS [option],
    CASE WHEN ID=1 THEN 'selected' ELSE '' END AS 'option/@selected',
FROM MyTable
FOR XML Path('')

出力:

<option value="1" selected="selected">Item1</option><option value="2" selected="">Item2</option>

これは技術的には正しい属性を設定しますが、ケースが true のオプションで属性 @selected のみが必要です。

正しい方向への助けや指摘は大歓迎です。

4

1 に答える 1

1

case ステートメントで空の文字列を使用する代わりに、Null を返します

選択する
    ID AS 'オプション/@値',
    CASE WHEN ID=1 THEN 'selected' ELSE null END AS 'option/@selected',
    名前 AS [オプション]    
マイテーブルから
FOR XML パス ('')
于 2012-07-20T15:16:51.353 に答える