É possível expressar 1 ou 0 como um bit quando usado como um valor de campo em uma instrução select?
por exemplo
Nesse caso, a instrução (que faz parte de uma instrução select) ICourseBased é do tipo int.
case
when FC.CourseId is not null then 1
else 0
end
as IsCoursedBased
Para que seja um tipo de bit, tenho que converter os dois valores.
case
when FC.CourseId is not null then cast(1 as bit)
else cast(0 as bit)
end
as IsCoursedBased
Existe uma maneira curta de expressar os valores como tipo de bit sem precisar converter todas as vezes?
(Estou usando o MS SQL Server 2005)
sql
sql-server
tsql
bit
Damien McGivern
fonte
fonte
Você pode adicionar o segundo trecho como uma definição de campo para ICourseBased em uma exibição.
fonte
Não, mas você pode converter a expressão inteira em vez dos subcomponentes dessa expressão. Na verdade, isso provavelmente torna menos legível neste caso.
fonte
Um pouco mais condensado que o de gbn:
Supondo que
CourseId
seja diferente de zeroCOALESCE
é como umISNULL()
, mas retorna o primeiro não nulo.Um Diferente de Zero
CourseId
receberá conversão de tipo para 1, enquanto um nuloCourseId
fará com que COALESCE retorne o próximo valor, 0fonte
Se você deseja que a coluna seja BIT e NOT NULL, coloque ISNULL antes do CAST.
fonte
Infelizmente não. Você terá que converter cada valor individualmente.
fonte
A expressão a ser usada dentro do SELECT pode ser
fonte
case when ... else ... end
, ainda é preciso transmitir1
e0
para o tipo BIT.Aproveite isso :) Sem converter cada valor individualmente.
fonte