Como fazer essa consulta?

Firebird

10/07/2006

Pessoa,
tenho um campo char(8) em minha tabela. o nome do campo é STATUS e o valor de cada caracter é 0 ou 1.
Desta forma posso ter por exemplo: 00001101 ou 00000000 ou 10101010 e assim por diante.

Preciso disponibilizar uma pesquisa onde o usuário poderá informar por qual indice do caracter do campo STATUS ele deseja pesquisar.

Por exemplo, o usuário pode fazer o seguinte filtro:

XX0XX1XX onde X significa qquer valor entre 0 e 1.

Pensei em usar o like. Seria a melhor opção?

´SELECT * FROM MINHA_TABELA WHERE STATUS = :STATUS´;

ParamByName(´STATUS´).AsString := ´¬¬0¬¬1¬¬´; isso é possível?


Parece que a minha lógica esta furada :(


Carlosib

Carlosib

Curtidas 0

Respostas

Weber

Weber

10/07/2006

SELECT * FROM MINHA_TABELA WHERE STATUS IN(:STATUS); 

ParamByName(´STATUS´).AsString := ´0,1´;



GOSTEI 0
Carlosib

Carlosib

10/07/2006

Por exemplo, o campo Status pode ter os seguintes valores:

1 caracter indica que o contrato esta ativo (0 ativo 1 não ativo)
2 caracter indica que o contrato esta pendente (0 pendente 1 não pendente)
3 caracter indica que o contrato está digitalizado (0 digitalizado 1 não digitalizado)
e por ai vai.
4 caracter em análise (0 em análise 1 já analisado)

Desta forma a string armazenada no banco de dados pode ter o seguinte valor

1011(não ativo - pendente - digitalizado - já analisado)

O usuário pode querer saber quais os contratos estão digitalizados independete de estarem ativos ou não; ou pendente ou não; ou analisados ou não.


´SELECT * FROM MINHA_TABELA WHERE STATUS LIKE :STATUS´; 

ParamByName(´STATUS´).AsString := ´¬¬0¬´; //


Como resolver isso?


GOSTEI 0
Carlosib

Carlosib

10/07/2006

Resolvido!

Não sei se foi da melhor forma :? mas usei a UDF substring() do firebird.


GOSTEI 0
POSTAR