Eu queria saber se é possível fazer algo assim (o que não funciona):
select cast( (exists(select * from theTable where theColumn like 'theValue%') as bit)
Parece que deve ser possível, mas muitas coisas que devem funcionar no SQL não;) Eu já vi soluções alternativas para isso (SELECT 1, onde ... existe ...), mas parece que eu deveria ser capaz de lance o resultado da função existente um pouco e termine com ela.
sql
sql-server
tsql
jcollum
fonte
fonte
Quando você joga em bit
bit
mapeia diretamente paraboolean
tipos de dados .net, mesmo que não seja realmente ...Parece semelhante, mas não dá linha (não zero) se não houver correspondências, portanto, não é o mesmo
fonte
EXISTS
,COUNT
continuará procurando nos dados por linhas correspondentes, mesmo depois de encontrar a primeira porque precisa obter contagem.Estou um pouco atrasado para isso; apenas tropeçou no post. No entanto, aqui está uma solução que é mais eficiente e elegante do que a resposta selecionada, mas deve oferecer a mesma funcionalidade:
fonte
Você pode usar
IIF
eCAST
fonte
Você também pode fazer o seguinte:
Se não houver valores começando com 'theValue', isso retornará nulo (sem registros) em vez de um bit 0
fonte
Não, não é possível. O tipo de dados bit não é um tipo de dados booleano. É um tipo de dados inteiro que pode ser 0,1 ou NULL.
fonte
IF(@TRUE)
por exemplo, nem vice-versa, uma expressão booleana pode ser coagida em um bit. (With egSET @BitVariable = (1=1)
)Outra solução é usar
ISNULL
em conjunto comSELECT TOP 1 1
:fonte
Acredito que exista só pode ser usado em uma cláusula where, portanto, você precisará executar uma solução alternativa (ou uma subconsulta existe como a cláusula where). Não sei se isso conta como uma solução alternativa.
Que tal isso:
fonte
fonte