Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CONVERT и CASE  [new]
ANTIVIR
Member

Откуда: МосквА
Сообщений: 1219
POL=CASE WHEN Gender='М' THEN 1 WHEN Gender='Ж' THEN 2 ELSE 0 END

Вот такой CASE в селекте, он вставляется во VIEW , и мне нужно что бы поле было типа INT,а не VARCHAR или CHAR

CONVERT(INT,POL=CASE WHEN Gender='М' THEN 1 WHEN Gender='Ж' THEN 2 ELSE 0 END) AS POL
Само собой меня в ошибку кидает "Incorrect syntax near '='."

Можно как то обойти?
21 мар 05, 11:42    [1401418]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
CONVERT(INT,CASE WHEN Gender='М' THEN 1 WHEN Gender='Ж' THEN 2 ELSE 0 END) AS POL
21 мар 05, 11:46    [1401446]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
CONVERT(INT, (CASE WHEN Gender='М' THEN 1 WHEN Gender='Ж' THEN 2 ELSE 0 END)) AS POL
?
21 мар 05, 11:46    [1401447]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
а зачем вообще CONVERT??
POL=CASE WHEN Gender='М' THEN 1 WHEN Gender='Ж' THEN 2 ELSE 0 END
и всё
21 мар 05, 11:48    [1401457]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
ANTIVIR
Member

Откуда: МосквА
Сообщений: 1219
Smirnov Anton
а зачем вообще CONVERT??
POL=CASE WHEN Gender='М' THEN 1 WHEN Gender='Ж' THEN 2 ELSE 0 END
и всё


Действительно )))
Не тот пример привел, тут и так INT получается))
Прошу прощения


Ну а вообще есть способо то?
21 мар 05, 11:53    [1401486]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
ANTIVIR
Member

Откуда: МосквА
Сообщений: 1219
Гавриленко Сергей Алексеевич
CONVERT(INT, (CASE WHEN Gender='М' THEN 1 WHEN Gender='Ж' THEN 2 ELSE 0 END)) AS POL
?


)))))Действительно
21 мар 05, 11:55    [1401494]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
ANTIVIR
Member

Откуда: МосквА
Сообщений: 1219
Big Thanx
21 мар 05, 11:55    [1401497]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
ANTIVIR

Ну а вообще есть способо то?

способ что сделать?
вот это работает, только смысла в нём нет
declare @Gender varchar(10)
set @Gender='М'
select CONVERT(INT,CASE WHEN @Gender='М' THEN 1 WHEN @Gender='Ж' THEN 2 ELSE 0 END) AS POL
21 мар 05, 11:56    [1401501]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
ANTIVIR
Member

Откуда: МосквА
Сообщений: 1219
[quot Smirnov Anton]

Вариант Гавриленко Сергей Алексеевич работает, а по поводу смысла, не совсем согласен )
Во VIEW мне нужны столбцы определенного типа. Есть другой способо во VIEW изменить тип столбца?
21 мар 05, 12:12    [1401583]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
ну дак cas'ом вы уже и так выбираете новый тип столбца, зачем его ещё раз конвертировать.
21 мар 05, 12:15    [1401594]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
ANTIVIR
Member

Откуда: МосквА
Сообщений: 1219
Smirnov Anton
ну дак cas'ом вы уже и так выбираете новый тип столбца, зачем его ещё раз конвертировать.

Понимаете, сервер не всегда ставит нужный тип столбца
Скажем будет CASE возвращать 0 или 1 , столбце будет INT а нужен BIT
Я конечно же могу ошибаться очень сильно )
21 мар 05, 12:19    [1401601]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
ANTIVIR
Smirnov Anton
ну дак cas'ом вы уже и так выбираете новый тип столбца, зачем его ещё раз конвертировать.

Понимаете, сервер не всегда ставит нужный тип столбца
Скажем будет CASE возвращать 0 или 1 , столбце будет INT а нужен BIT

Именно так и есть.
21 мар 05, 12:19    [1401603]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
ANTIVIR
Member

Откуда: МосквА
Сообщений: 1219
Гавриленко Сергей Алексеевич

Именно так и есть.

Я уж было подумал
ANTIVIR
Я конечно же могу ошибаться очень сильно )


А по поводу VIEW и типов столбца, их можно задать только так или есть всетаки аналог
ALTER  TABLE ALTER COLUMN
?
21 мар 05, 12:24    [1401635]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
а чем не устраивает CONVERT или CAST? это же явное задание типа. То, что нужно.
Кстати, любое число (например: 1, 5, 20, 0) преобразуются к типу INT. Если же число задано с указанием дробной части (например, 0.5, -0.1, 1.0), то это будет float.
21 мар 05, 12:33    [1401672]     Ответить | Цитировать Сообщить модератору
 Re: CONVERT и CASE  [new]
ANTIVIR
Member

Откуда: МосквА
Сообщений: 1219
AAron
а чем не устраивает CONVERT или CAST? это же явное задание типа. То, что нужно.
Кстати, любое число (например: 1, 5, 20, 0) преобразуются к типу INT. Если же число задано с указанием дробной части (например, 0.5, -0.1, 1.0), то это будет float.


Я просто предположил, что если через CONVERT не будет ли это слишком медленно? Он вероятно каждую строку будет преобраовывать ( я просто не вкурсе)
21 мар 05, 12:38    [1401693]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить