Использование Case
Falk0ner, вс, 06/07/2008 - 15:34.
2.
Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Использование Case
Оператор выбора Case работает немного по другому чем в классических языках. В классических языках Case выбирает какой оператор запускать, а в T-SQL он выбирает выражение которое надо использовать для вычисления чего-то. Case выступает в ввиде функции которая возвращает результат в зависимости от условия. Имеет 2 формы написания:
1.
Declare @m int
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Set" title="www.drkb.ru
Set">www.drkb.ru
Set</a> @m=Month(GetDate())
Select
@m as MonthNumber,
Case @m
When 1 Then 'Январь'
When 2 Then 'Февраль'
When 12 Then 'Декабрь'
Else 'Не зима'
End as MonthName
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Set" title="www.drkb.ru
Set">www.drkb.ru
Set</a> @m=Month(GetDate())
Select
@m as MonthNumber,
Case @m
When 1 Then 'Январь'
When 2 Then 'Февраль'
When 12 Then 'Декабрь'
Else 'Не зима'
End as MonthName
2.
Declare @m int
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Set" title="www.drkb.ru
Set">www.drkb.ru
Set</a> @m=Month(GetDate())
Select
@m as MonthNumber,
Case
When @m=1 Then 'Январь'
When @m=2 Then 'Февраль'
When @m=12 Then 'Декабрь'
When @m is Null Then 'Неизвестно'
Else 'Не зима'
End as MonthName
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Set" title="www.drkb.ru
Set">www.drkb.ru
Set</a> @m=Month(GetDate())
Select
@m as MonthNumber,
Case
When @m=1 Then 'Январь'
When @m=2 Then 'Февраль'
When @m=12 Then 'Декабрь'
When @m is Null Then 'Неизвестно'
Else 'Не зима'
End as MonthName
Можно использовать Case для присвоения
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Set" title="www.drkb.ru
Set">www.drkb.ru
Set</a> @MyVar=
Case
When @m=1 Then 'Январь'
When @m=2 Then 'Февраль'
When @m=12 Then 'Декабрь'
When @m is Null Then 'Неизвестно'
Else 'Не зима'
End
Set" title="www.drkb.ru
Set">www.drkb.ru
Set</a> @MyVar=
Case
When @m=1 Then 'Январь'
When @m=2 Then 'Февраль'
When @m=12 Then 'Декабрь'
When @m is Null Then 'Неизвестно'
Else 'Не зима'
End
Можно использовать в операциях сравнения, сортировки, группировки и функциях:
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Select" title="www.drkb.ru
Select">www.drkb.ru
Select</a>
dbo.MyFunction(
Case
When @m=1 Then 'Январь'
When @m=2 Then 'Февраль'
When @m=12 Then 'Декабрь'
When @m is Null Then 'Неизвестно'
Else 'Не зима'
End),
Case When MyField=0 Then 'False' else 'True' End,
Count(*)
From MyTable
Where Case When MyField1=0 Then Field2 else Field3 End>1
Group by Case When MyField=0 Then 'False' else 'True' End
Order By Case When MyField=0 Then 'False' else 'True' End
Select" title="www.drkb.ru
Select">www.drkb.ru
Select</a>
dbo.MyFunction(
Case
When @m=1 Then 'Январь'
When @m=2 Then 'Февраль'
When @m=12 Then 'Декабрь'
When @m is Null Then 'Неизвестно'
Else 'Не зима'
End),
Case When MyField=0 Then 'False' else 'True' End,
Count(*)
From MyTable
Where Case When MyField1=0 Then Field2 else Field3 End>1
Group by Case When MyField=0 Then 'False' else 'True' End
Order By Case When MyField=0 Then 'False' else 'True' End
Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Отправить комментарий