SQL View - добавить значения по умолчанию, если ноль? - PullRequest
14 голосов
/ 10 февраля 2011

Я создаю представление и хочу заполнить ячейки заранее заданным значением, если они равны нулю.

Выбор для просмотра:

SELECT a_case.Id, 
    R1.Type AS Referred_by_1,
    R1.Type AS Referred_by_2,
    R1.Type AS Referred_by_3
FROM dbo.CaseInfo a_case LEFT JOIN
    dbo.Referrer R1 ON P.Id = R1.Case_Id AND R1.Seq = 1 LEFT JOIN
    dbo.Referrer R2 ON P.Id = R2.Case_Id AND R2.Seq = 2 LEFT JOIN
    dbo.Referrer R3 ON P.Id = R3.Case_Id AND R3.Seq = 3 

Ссылки являются необязательными, и если они не указаны, мне нужно заполнить поле 'ND'.

Я думаю, что, возможно, мне следует использовать CASE WHEN, но я не уверен, как интегрировать это в существующий выбор ...

Любой совет с благодарностью получен! - L

Ответы [ 5 ]

24 голосов
/ 10 февраля 2011

Вы можете использовать ISNULL:

SELECT a_case.Id,      
    ISNULL(R1.Type, 'ND') AS Referred_by_1,     
    ISNULL(R2.Type, 'ND') AS Referred_by_2,     
    ISNULL(R3.Type, 'ND') AS Referred_by_3 
FROM ...
21 голосов
/ 10 февраля 2011

Использование COALESCE Например

SELECT a_case.Id, 
       COALESCE(R1.Type, 'ND') AS Referred_by_1,
       COALESCE(R2.Type, 'ND') AS Referred_by_3,
       COALESCE(R3.Type, 'ND') AS Referred_by_3
  FROM ...
3 голосов
/ 10 февраля 2011
case when R1.Type is null then 'ND' else R1.Type end AS Referred_by_3
2 голосов
/ 10 февраля 2011

Вы можете использовать функцию IsNull(column_expression,default_value).

0 голосов
/ 10 февраля 2011

А почему бы не определить значение по умолчанию для поля в таблице базы данных? Запомните, если вам нужно, чтобы все записи имели это значение или одну отправленную в вставке или удалении, и вы никогда не хотите, чтобы это значение было нулевым, вы должны исправить любые существующие нулевые значения, а затем добавить значение по умолчанию и убедиться, что в поле установлено недопустимое пустое значение. Преимущество этого подхода состоит в том, что оно обеспечивает соблюдение правила независимо от того, как данные вводятся в систему. Если вы хотите использовать значение по умолчанию только в течение некоторого времени, сделайте это в коде приложения или в сохраненном протоколе. Но если поле должно иметь значение alawys, лучше всего делать это в базе данных, чтобы избежать проблем с целостностью данных.

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