Domanda

Probabilmente una domanda davvero semplice a cui rispondere, ma non posso per la vita di me trovarlo da nessuna parte.

Sto cercando di creare opzioni di elenco selezionate dal database utilizzando per il percorso XML. Finora ho questo:

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

Che mi prende questo:

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

Sì, cose piuttosto semplici ma ora voglio impostare quale opzione è selezionata dove l'ID è diciamo 1. Quindi questo dovrebbe mai verificarsi solo una volta. Quindi aggiungo questo:

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

Produzione:

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

Sebbene ciò impone tecnicamente l'attributo giusto, ho solo bisogno dell'attributo @Selected su opzioni in cui il caso è vero.

Qualsiasi aiuto o punto nella giusta direzione sarebbe fortemente ricevuto.

È stato utile?

Soluzione

Invece di usare una stringa vuota nell'istruzione del caso restituisce un null

SELECT 
    ID AS 'option/@value', 
    CASE WHEN ID=1 THEN 'selected' ELSE nullo END AS 'option/@selected',
    Name AS [option]    
FROM MyTable
FOR XML Path('')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top