4 votes

T-SQL: Que signifie ce passage dans la documentation de COALESCE?

ISNULL et COALESCE bien qu'équivalents, peuvent se comporter différemment. Une expression impliquant ISNULL avec des paramètres non nuls est considérée comme NOT NULL, tandis que les expressions impliquant COALESCE avec des paramètres non nuls sont considérées comme NULL.

http://msdn.microsoft.com/en-us/library/ms190349.aspx

5voto

zerkms Points 105994

Il détermine la nullabilité, disons, d'une colonne calculée en utilisant ISNULL ou COALESCE

RowCheckSum AS COALESCE(...)

...signifie que la définition de la colonne RowCheckSum a le mot-clé NULL, et

RowCheckSum2 AS ISNULL(...)

...a une définition NOT NULL.

Cela signifie aussi que dans l'ensemble de résultats, le premier champ peut renvoyer des valeurs NULL, et le deuxième - non.

3voto

u07ch Points 5303

C'est mal formulé; il essaie de dire que IsNull est toujours évalué comme une colonne Not Null par défaut; tandis que Coalesce peut être évalué comme une valeur par défaut de Null.

Create view dbo.pdtest
as

Select  
    ISNULL(GETDATE(), GETDATE()) as test1,
    coalesce(GETDATE(), getdate()) as test2

go

Create view dbo.pdtest2
as

Select  
    ISNULL(GETDATE(), GETDATE()) as test1,
    coalesce(GETDATE(), getdate(), null) as test2

Lorsque vous consultez les définitions des colonnes de la vue (dans le studio de gestion par exemple), la définition sur pdTest montre les colonnes comme

DateTime not null, 
DateTime not null. 

Sur pdtest2, la définition est

DateTime Not Null, 
DateTime Null. 

Si vous ajoutez ensuite une troisième vue; où l'instruction isnull est évaluée comme null

Create view dbo.pdtest3
as

Select  
    ISNULL(GETDATE(), null) as test1,
    coalesce(GETDATE(), getdate(), null) as test2

La définition des données de la vue est toujours Not Null, Null.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X