Se è necessario mantenere il XML sia valido o non valido, si potrebbe avere un bandiera sul tavolo come IsValid (bit)
. Il processo di caricamento potrebbe quindi eseguire un controllo unico su questi dati per verificare se l'XML è valido e impostare il flag in base al risultato. In questo modo è possibile ottenere il codice XML valido utilizzando la query:
SELECT
CASE WHEN IsValid = 1 THEN CAST(xml_data as XML)
ELSE null
END
Se non è necessario per mantenere XML non valido, poi basta rifiutano durante il caricamento, impostando il campo a NULL
, quindi la query apparirebbe come:
SELECT
CASE WHEN xml_data IS NOT NULL THEN CAST(xml_data as XML)
ELSE null
END
Entrambi i modi darà la migliore prestazione che passando attraverso un SQL function
per ogni query.
Quale versione di SQL Server? –
Microsoft SQL Server 2008 (SP1) – David
Non è possibile ** eseguire un processo durante il caricamento ** di questi dati per rifiutare XML non valido, altrimenti si esegue questa query tramite una funzione ogni volta che si utilizza questa istruzione select, che non è ideale per le prestazioni. – christiandev