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 lo hacen;) He visto soluciones para esto (SELECCIONE 1 donde ... Existe ...) pero parece que debería poder simplemente emitir el resultado de la función existente como un bit y terminar con ello.
sql
sql-server
tsql
jcollum
fuente
fuente
Cuando lanzas a bit
bit
se asigna directamente aboolean
tipos de datos en .net, incluso si no es realmente ...Esto se ve similar pero no da fila (no cero) si no coincide, por lo que no es lo mismo
fuente
EXISTS
,COUNT
seguirá buscando en los datos filas coincidentes incluso después de encontrar la primera porque necesita contar.Llego un poco tarde a la aceptación de esto; simplemente tropecé con la publicación. Sin embargo, aquí hay una solución que es más eficiente y ordenada que la respuesta seleccionada, pero debería ofrecer la misma funcionalidad:
fuente
Puedes usar
IIF
yCAST
fuente
También puedes hacer lo siguiente:
Si no hay valores que comiencen con 'theValue', esto devolverá un valor nulo (sin registros) en lugar de un bit 0
fuente
No, no es posible. El tipo de datos de bit no es un tipo de datos booleanos. Es un tipo de datos entero que puede ser 0,1 o NULL.
fuente
IF(@TRUE)
por ejemplo, ni viceversa, se puede convertir una expresión booleana en un bit. (Con, por ejemploSET @BitVariable = (1=1)
)Otra solución es usar
ISNULL
en conjunto conSELECT TOP 1 1
:fuente
Creo que existe solo se puede usar en una cláusula where, por lo que tendrá que hacer una solución (o una subconsulta con existe como la cláusula where). No sé si eso cuenta como una solución alternativa.
¿Qué hay de esto?
fuente
fuente