2012-05-04 4 views
0

Я хочу знать, что делает coalesce в этом случае, я знаю, что он возвращает сначала не пустое значение, и я прошел через этот link.Что делает COALESCE в SQL SERVER

Я хочу знать, что он делает конкретно здесь:

DECLARE @EMPNO NUMERIC(22,5) 

SELECT @EMPNO = '' 

SELECT @EMPNO = COALESCE(?, 0) 

Моя цель в письменном виде эти заявления, если @EMPNO пустым Я хочу, чтобы заменить нулем вместо. Боюсь, что я смог добиться этого из этих трех заявлений.

Помощь меня

ответ

1

Я думаю, что вы должны сделать так:

SELECT @EMPNO = COALESCE(@EMPNO, 0) 

Вы знаете, что вы также можете написать

SET @EMPNO = COALESCE(@EMPNO, 0) 

Вы не можете установить NUMERIC в пустой VARCHAR. Вы должны установить его на NULL. Таким образом, вы полный код должен быть таким:

DECLARE @EMPNO NUMERIC(22,5) 
SELECT @EMPNO = NULL 
SELECT @EMPNO = COALESCE(@EMPNO, 0) 

Или вы даже не нужно, чтобы установить @EMPNO в NULL. Когда вы объявляете переменную, она по умолчанию равна NULL. Так что единственное, что вам нужно это:

DECLARE @EMPNO NUMERIC(22,5) 
SELECT @EMPNO = COALESCE(@EMPNO, 0) 

Если вы читали на MSDN написано:

Возвращает первое ненулевое выражение среди своих аргументов.

Ссылка here

+0

Это ошибка я получаю: Ошибка преобразования типа данных VARCHAR в числовой. –

+0

Обновлен ответ – Arion

Смежные вопросы