Ho una colonna che può avere valori di o spazio vuoto (ad esempio ''
). Vorrei sostituire entrambi i valori con un valore valido come 'UNKNOWN'
. Le varie soluzioni che ho trovato suggeriscono di modificare il valore all'interno della tabella stessa. Tuttavia, questa non è un'opzione in questo caso in quanto il database è per un'applicazione di terze parti sviluppata e/o patchata molto male (in realtà penso che il mio Rottweiler avrebbe potuto fare un lavoro migliore). Sono preoccupato che la modifica dei dati sottostanti potrebbe far sì che l'applicazione si sciolga in un buco fumante.Sostituzione di NULL e stringa vuota all'interno dell'istruzione Select
ho tentato variazioni dei seguenti comandi:
COALESCE(Address.COUNTRY, 'United States') -- Won't replace empty string as it is not NULL
REPLACE(Address.COUNTRY, '', 'United States') -- Doesn't replace empty string
ISNULL(Address.COUNTRY, 'United States') -- Works for NULL but not empty string
So che avrei potuto utilizzare l'istruzione CASE
ma sono sperando c'è una soluzione molto più elegante/efficiente.
Dovrai fidarti di me quando dico che ho cercato una soluzione al mio problema specifico e non ho trovato una risposta. Se ho trascurato qualcosa, però, gentilmente mostrami il percorso illuminato.
Questo sembra averlo fatto. La birra è su di me. Tuttavia, sono sorpreso che funzioni in quanto la mia comprensione è che la funzione COALESCE catturerà il primo valore non nullo. Nella dichiarazione mi aspetterei che restituisca lo spazio vuoto in contrapposizione alla stringa di testo ??? Ma, in fondo, grazie per la soluzione. – mbadtk
Ci sono due funzioni in questa istruzione, una 'NULLIF' che converte una stringa vuota in null e quindi' coalizione' che controlla null –
@rs: Nota: 'nullif' non converte la stringa vuota in null, Restituisce null se due argomenti sono uguali;). –