Crea tag con per il percorso XML in SQL. Rimuovere gli attributi indesiderati
-
12-11-2019 - |
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.
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('')