Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come sostituire una stringa se il record è NULL in T-SQL

Puoi utilizzare COALESCE o ISNULL . Il primo è standard e restituisce il primo NOT NULL argomento (o NULL se tutti gli argomenti sono NULL )

SELECT COALESCE(micv.value,'Pending') as value

ISNULL è limitato a soli 2 argomenti ma è più efficiente in SQL Server se il primo valore da testare è costoso da valutare (ad esempio una sottoquery).

Un potenziale "capito" con ISNULL da tenere presente è che restituisce il tipo di dati del primo parametro, quindi se la stringa da sostituire è più lunga di quella consentita dal tipo di dati della colonna, sarà necessario un cast.

Es.

CREATE TABLE T(C VARCHAR(3) NULL);

INSERT T VALUES (NULL);

SELECT ISNULL(C,'Unknown')
FROM T

Restituirebbe Unk

Ma ISNULL(CAST(C as VARCHAR(7)),'Unknown') o COALESCE funzionerebbero entrambi come desiderato.