powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли использовать оператор Case в выражениии Where
7 сообщений из 7, страница 1 из 1
Можно ли использовать оператор Case в выражениии Where
    #32005591
Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну чтонибудь похожеее на select * Where Case When @a is null Then True Else a = @a End
...
Рейтинг: 0 / 0
Можно ли использовать оператор Case в выражениии Where
    #32005592
помоему нет но можно так
( ( @a is not null and a = @a ) or ( @a is null ) )
...
Рейтинг: 0 / 0
Можно ли использовать оператор Case в выражениии Where
    #32005593
Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно еще короче
( a = @a or @a is null )
...
Рейтинг: 0 / 0
Можно ли использовать оператор Case в выражениии Where
    #32005596
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще Case можно писать и в выражениии Where, и в Order by и где угодно. Но вопрос как я понял в другом.
В TSQL нет типа boolean и соответственно нет переменных true и false. Т.е. если уж дословно (или "дооператорно") переписывать запрос, то надо написать что-то вроде:
select * Where 1=Case When @a is null 1 when a = @a then 1 else 0 End
Ну еще from нужен конечно.
...
Рейтинг: 0 / 0
Можно ли использовать оператор Case в выражениии Where
    #32005601
Alexander Chepack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще короче:

where (a=IsNull(@a,a))

-- не знаю как будет работать если a содержит NULL.
-- ну не оптимизируется такой поиск - т.е. для таблиц с миллионами строк не стоит применять.
...
Рейтинг: 0 / 0
Можно ли использовать оператор Case в выражениии Where
    #32005832
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем выражается нерабочесть такой конструкции? Я использую точно такую же конструкцию, только проверяю на Is Null значение конкретного поля таблицы. Все работает. MS SQL 2000.
...
Рейтинг: 0 / 0
Можно ли использовать оператор Case в выражениии Where
    #32005871
Alexander Chepack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не говорил, что это не работает, я говорил, что это не оптимизируется - т.е. если это единственное условие при - поиске индексы использоваться не будут...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли использовать оператор Case в выражениии Where
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]