2014-02-18 3 views
0

У меня такое ощущение, что это довольно простой. Мне нужно отредактировать строку в операторе SELECT, который смотрит, есть ли в поле значение NULL. Если есть значение NULL, мне нужен новый столбец (не названный) для отображения «0» для этой строки. Если в строке есть данные, мне нужно отобразить «1» в этой строке. Есть ли способ сделать это без значительной модификации логики? (С помощью SQL Server Management Studio)Если не <> NULL, тогда «xxxField» равно «1»

Вот код:

SELECT DISTINCT t.Name, 
    CONVERT(VARCHAR(10), t.DischargeDateTime, 120) AS DischargeDate, 
    t.PatientPortalEnabled, 
    t.Allergy, 
    CONVERT(VARCHAR(10), t.AllergyUpdateTime, 120) AS AllergyUpdate, 
    /*This is where I would like to put the logic if possible*/ <> NULL, 
    t.ElapseTimeForAllergyUpdateInMinutes, 
    t.OldValue, 
    t.NewValue, 
    t.ElapseTimeForAllergyUpdateInHours, 
    t.DischargeDateTime 
+0

Что делать, если поле содержит значение 0. –

ответ

1

Попробуйте это:

CASE WHEN MyField IS NULL THEN 0 ELSE 1 END 

Здесь в вашем коде:

SELECT DISTINCT t.Name, 
CONVERT(VARCHAR(10), t.DischargeDateTime, 120) AS DischargeDate, 
t.PatientPortalEnabled, 
t.Allergy, 
CONVERT(VARCHAR(10), t.AllergyUpdateTime, 120) AS AllergyUpdate, 
CASE WHEN t.MyField IS NULL THEN 0 ELSE 1 END, 
t.ElapseTimeForAllergyUpdateInMinutes, 
t.OldValue, 
t.NewValue, 
t.ElapseTimeForAllergyUpdateInHours, 
t.DischargeDateTime 
1

Вы можете сделать это используя инструкцию CASE.

SELECT DISTINCT t.Name, 
CONVERT(VARCHAR(10), t.DischargeDateTime, 120) AS DischargeDate, 
t.PatientPortalEnabled, 
t.Allergy, 
CONVERT(VARCHAR(10), t.AllergyUpdateTime, 120) AS AllergyUpdate, 
/*This is where I would like to put the logic if possible*/ 
CASE 
    WHEN t.MyField IS NULL THEN 0 
    ELSE 1 
END AS MyNewField, 
t.ElapseTimeForAllergyUpdateInMinutes, 
t.OldValue, 
t.NewValue, 
t.ElapseTimeForAllergyUpdateInHours, 
t.DischargeDateTime 
0

Использование оператора XOR побитовое:

declare @x int = null 
select isnull((@x^@x),-1)+1 
Смежные вопросы