Функция ISNULL в команде выбора вида - PullRequest
2 голосов
/ 29 ноября 2011

Это часть моего оператора select в форме просмотра, который прекрасно работает, пока не достигнет нулевого значения в процессе обновления.

 (SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id
 ORDER BY sort_no ) AS faxid

, поэтому я попытался использовать функцию ISNULL следующим образом, но он выдаетошибка.как это можно сделать?

ISNULL((SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id= @id ORDER BY sort_no ) AS faxid ,0) AS faxid

Ответы [ 3 ]

8 голосов
/ 29 ноября 2011

Я думаю, что нашел причину проблемы. И если это действительно так, то я почти уверен, что кто-то другой заметил бы это раньше, чем я, если бы вы более красиво отформатировали свой второй фрагмент кода.

Итак, ваш фрагмент кода, слегка переформатированный:

ISNULL(
  (
    SELECT TOP 1 F.tel_id
    FROM TELEPHONE as F
    where F.tel_type_id = 3
      AND F.client_id= @id
    ORDER BY sort_no
  ) <b><i>AS faxid</i></b>,
  0
) AS faxid

Подсвеченная часть, бит AS fixed сразу после подзапроса, ошибочна, ее просто не должно быть. Возможно, вы просто упустили это из виду.

1 голос
/ 29 ноября 2011

Ваш ISNULL должен быть около F.tel_id

Попробуйте

SELECT TOP 1 ISNULL(F.tel_id, 0) FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id ORDER BY sort_no
0 голосов
/ 29 ноября 2011

Вы можете использовать функцию COALESCE , чтобы вернуть что-то отличное от нуля. Поэтому, когда ваш запрос выполняется и имеет значение, он возвращается, иначе возвращается указанное вами значение.

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