¿Es posible seleccionar EXISTE directamente como un bit?
Me preguntaba si es posible hacer algo como esto (que no funciona):
select cast( (exists(select * from theTable where theColumn like 'theValue%') as bit)
Parece que debería ser factible, pero muchas cosas que deberían funcionar en SQL no funcionan;) He visto soluciones para esto (SELECCIONE 1 donde... Existe...) pero parece que debería poder hacerlo. emita el resultado de la función existe como un bit y termine con ello.
No, tendrás que utilizar una solución alternativa.
Si debe devolver un bit condicional 0/1, otra forma es:
SELECT CAST(
CASE WHEN EXISTS(SELECT * FROM theTable where theColumn like 'theValue%') THEN 1
ELSE 0
END
AS BIT)
O sin el yeso:
SELECT
CASE
WHEN EXISTS( SELECT 1 FROM theTable WHERE theColumn LIKE 'theValue%' )
THEN 1
ELSE 0
END
SELECT CAST(COUNT(*) AS bit) FROM MyTable WHERE theColumn like 'theValue%'
Cuando lanzas a morder
- 0 -> 0
- todo lo demás -> 1
- Y NULL -> NULL por supuesto, pero no puedes obtener NULL con COUNT(*) sin GROUP BY
bit
se asigna directamente a boolean
tipos de datos .net, incluso si no lo es realmente...
Esto se ve similar pero no da ninguna fila (ni cero) si no hay coincidencias, por lo que no es lo mismo
SELECT TOP 1 CAST(NumberKeyCOlumn AS bit) FROM MyTable WHERE theColumn like 'theValue%'
Puedes usar IIF
yCAST
SELECT CAST(IIF(EXISTS(SELECT * FROM theTable
where theColumn like 'theValue%'), 1, 0) AS BIT)