Quiero seleccionar algo condicionalmente según si un campo de bit es verdadero o falso. Esta fue la sintaxis que he intentado originalmente:¿Por qué no puedo usar un campo de bit como una expresión booleana en una declaración de caso de SQL?
CASE WHEN isSoon THEN 'Soon' ELSE 'Not so soon' END As HowSoon
Esto tiene sentido para mí ya lo que sigue el "cuándo" tiene que ser una expresión booleana, que es isSoon
, ya que es un campo de bits. Sin embargo, esto no funcionó. Lo que tenía que hacer en el final fue:
CASE WHEN isSoon = 1 THEN 'Soon' ELSE 'Not so soon' END As HowSoon
Esto parece redundante para mí ... Es como escribir if(isSoon == True)
en un lenguaje de programación en lugar de la más intuitiva if(isSoon)
y va contra la corriente. ¿Por qué SQL está configurado así? ¿Es porque los campos de bits no son realmente booleanos?
¿Puede decirnos también qué proveedor de base de datos está utilizando? MySQL no parece tener un problema con eso. –
Esto me molesta también, pero sql no está configurado de esa manera. De la misma manera que no puede usar un cálculo cuando pasa un parámetro a un SP (por ejemplo, no puede hacer 'exec ListPermissionsByUser @ DomainName + '\' + @ UserName') –