Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment remplacer une chaîne si l'enregistrement est NULL dans T-SQL

Vous pouvez utiliser COALESCE ou ISNULL . Le premier est standard et renvoie le premier NOT NULL argument (ou NULL si tous les arguments sont NULL )

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

ISNULL est limité à seulement 2 arguments mais est plus efficace dans SQL Server si la première valeur à tester est coûteuse à évaluer (par exemple une sous-requête).

Un "gotcha" potentiel avec ISNULL à savoir est qu'il renvoie le type de données du premier paramètre, donc si la chaîne à remplacer est plus longue que le type de données de la colonne ne le permet, vous aurez besoin d'un transtypage.

Par exemple

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

INSERT T VALUES (NULL);

SELECT ISNULL(C,'Unknown')
FROM T

Renverrait Unk

Mais ISNULL(CAST(C as VARCHAR(7)),'Unknown') ou COALESCE les deux fonctionneraient comme vous le souhaitez.