2013-10-27 2 views
4

Я использую базу данных SQL Server.CASE when null в SQL Server

Этого запрос:

SELECT * 
FROM table1 
WHERE table1.name = 'something' 
     AND CASE 
      WHEN table1.date IS NULL THEN 1 = 1 
      ELSE table1.date >= '2013-09-24' 
      END; 

дает мне ный ошибкой:

[Error Code: 102, SQL State: S0001] Incorrect syntax near '='.

Любой помощь ценится,

Заранее спасибо

mismas

+0

Есть очевидные проблемы, но, не зная, что вы пытаетесь сделать, сложно предложить исправить. – Laurence

+0

Я пытаюсь и расстаюсь с предложением where и use case ... когда ... then ... else ... end. Если дата имеет значение null, то я хочу, чтобы выражение where было равно true, иначе, если дана дата, тогда я хотел бы, чтобы и часть предложения where датировала> = '2013-09-24'. – mismas

+0

Выражение 'CASE' возвращает значение, например. 'case, когда table1.date имеет значение NULL, а затем 1, когда table1.date> = '20130924', затем 1 else 0 end = 1'. – HABO

ответ

2

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

select * 
from table1 
where table1.name='something' 
and (table1.date is null Or table1.date >= '2013-09-24'); 
+0

Спасибо всем за комментарии, это помогло мне :) – mismas

4

I тонким k это то, что вы хотите.

select 
    * 
from 
    table1 
where 
    table1.name = 'something' and (
     table1.date is null or 
     table1.date >= '2013-09-24' 
    ); 

SQL Server на самом деле не имеет логического типа, который можно использовать в качестве результата.

1

Вы могли бы рассмотреть Coalesce ключевое слово.

select 
    * 
from 
    table1 
where 
    table1.name='something' and 
    coalesce(table1.date,'2013-09-24') >= '2013-09-24'; 

Coalesce возвращает первый аргумент, который не является нулевым.

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