¿Es posible expresar 1 o 0 como un bit cuando se usa como valor de campo en una instrucción select?
p.ej
En este caso, la declaración (que es parte de una declaración de selección) ICourseBased es de tipo int.
case
when FC.CourseId is not null then 1
else 0
end
as IsCoursedBased
Para que sea un poco tipo tengo que emitir ambos valores.
case
when FC.CourseId is not null then cast(1 as bit)
else cast(0 as bit)
end
as IsCoursedBased
¿Existe una forma abreviada de expresar los valores como tipo de bit sin tener que emitir cada vez?
(Estoy usando MS SQL Server 2005)
sql
sql-server
tsql
bit
Damien McGivern
fuente
fuente
Puede agregar el segundo fragmento como una definición de campo para ICourseBased en una vista.
fuente
No, pero podría emitir la expresión completa en lugar de los subcomponentes de esa expresión. En realidad, eso probablemente lo hace menos legible en este caso.
fuente
Ligeramente más condensado que el de gbn:
Suponiendo
CourseId
que no es ceroCOALESCE
es como unISNULL()
, pero devuelve el primer no nulo.Un valor distinto de
CourseId
ceroCourseId
obtendrá una conversión de tipo a 1, mientras que un valor nulo hará que COALESCE devuelva el siguiente valor, 0fuente
Si desea que la columna sea BIT y NO NULL, debe poner ISNULL antes del CAST.
fuente
Lamentablemente no. Tendrá que emitir cada valor individualmente.
fuente
La expresión a usar dentro de SELECT podría ser
fuente
case when ... else ... end
, uno todavía tiene que lanzar1
y0
al tipo BIT.Disfruta esto :) Sin emitir cada valor individualmente.
fuente