T-SQL: Что означает этот отрывок в документации COALESCE? - PullRequest
4 голосов
/ 24 декабря 2010

ISNULL и COALESCE, хотя и эквивалентны, могут вести себя по-разному.Выражение с участием ISNULL с ненулевыми параметрами считается NOT NULL, а выражения с использованием COALESCE с ненулевыми параметрами - NULL.

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

Ответы [ 2 ]

5 голосов
/ 24 декабря 2010

Определяет обнуляемость, скажем, вычисляемого столбца, используя ISNULL или COALESCE

RowCheckSum AS COALESCE(...)

... означает, что RowCheckSum определение столбца имеет ключевое слово NULL и

RowCheckSum2 AS ISNULL(...)

... имеет NOT NULL определение.

Это также означает, что в наборе результатов первое поле может возвращать NULL значений, а второе - не может.

3 голосов
/ 24 декабря 2010

Это плохо сформулировано;он пытается сказать, что IsNull всегда оценивается как столбец Not Null по умолчанию;в то время как Coalesce может по умолчанию принимать значение 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

При просмотре определений столбцов представления (например, в Management Studio) определение в pdTest показывает столбцы как

DateTime not null, 
DateTime not null. 

На pdtest2 определение будет

DateTime Not Null, 
DateTime Null. 

Если вы добавите третий вид;где оператор isnull оценивается как нулевой

Create view dbo.pdtest3
as

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

Определение данных представления по-прежнему не равно Null, равно Null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...