Fórum Firebird Select com between com resultados #502751
28/11/2014
0
Toa batendo cabeça tentando entender porque esses dois comandos abaixo um traz resultados e o outros não retorna nenhuma valor:
[code]
Select * from DOCUMENTO d
Este outro onde so foi acrescentado valores na string, resulta em nenhum registro selecionado
Alguem tem alguma ideia o porque ??? já bati cabeça e não consigo resolver
Banco de dados : Firebird 2.53.
OS Win 7.
Estpu usando Ibexpert e o IbConsole, o resultado e o mesmo nos dois.
Mauri Lima
Boa Vista Roraima
Mauri Oliveira
Curtir tópico
+ 0Posts
28/11/2014
Marisiana Battistella
A causa não seria porque há um espaço em branco em 'LICENCA ME'?
Não conheço essa função do firebird, então foi a primeira hipótese q veio em mente quando li a pergunta...
Gostei + 0
28/11/2014
Marisiana Battistella
Gostei + 0
28/11/2014
Mauri Oliveira
Não, o correto seria Licença Medica, se retirar o between, funciona retornando reultado normal, mesmo usando a string composta, ou parte da string, mas com o copmando between tudo fica confuso e não funciona.
Gostei + 0
28/11/2014
Mauri Oliveira
E confuso mesmo.. isso e coisa pra ninja!!..
Gostei + 0
28/11/2014
Junior Azevedo
Select * from DOCUMENTO d
WHERE ( d.DATADOCUMENTO Between cast('20.11.2014' as date) And cast('21.11.2014' as date) ) AND
(d.Historico like '%LICENCA ME') and (d.TipoCodigo = '0001')
Gostei + 0
28/11/2014
Mauri Oliveira
Já tentei assim também, o resultado e o mesmo do starting with, se usar somente a primeira palavra funciona, mas se acrescentar qualquer outra passa a não retornar resultado.
exemplo se somente (Licenca) fica ok mas se usar (Licenca Me) não retorna resultado.
Gostei + 0
28/11/2014
Mauri Oliveira
Fiz um teste com a mesma linha de comando no Postgres e não deu erro algum, retornou o resultado ok, ao que parece que é um bug no Firebird.2.5.3.
Gostei + 0
28/11/2014
Marisiana Battistella
d.Historico like '%LICENCA ME%'
Qual é o erro que o firebird apresenta?
Gostei + 0
28/11/2014
Mauri Oliveira
testei de todas as formas e variações com like, e também com starting with(firebird) equivale a like(string%), com containing(firebird) equivale a like (%string%), e retorna sempre vazio, e o firebird não retorna nenhum erro.
No postgresSql definir uma tabela igual ao do firebird com os mesmo dados, executei o mesmo comando usando o, like e o mesmo funcionou de forma correta, a única diferença foi devido ao collate ptbr( firebird ) que traz tanto ç como c.
De qualquer forma agradeço sua presteza em ajudar. Obrigado!.
.
Gostei + 0
29/11/2014
Marisiana Battistella
Eu continuo achando que tem a ver com o espaço em branco que há na string utilizada para a pesquisa...
Gostei + 0
29/11/2014
Mauri Oliveira
No firebird se remover o between funciona normal.
Já tentei unsando
Select * from DOCUMENTO d
WHERE ( d.DATADOCUMENTO >= cast('20.11.2014' as date) And d.DATADOCUMENTO <=cast('21.11.2014' as date) ) AND
((d.Historico like 'LICENCA me%') and (d.TipoCodigo = '0001'))
O erro persiste, se tirar as comparação da data funciona.
E muito estranho, acho que vou te que usar um sub-select para resolver
Gostei + 0
29/11/2014
Rafael Mota
Por exemplo, já verificou se LICENCA ME também tem o TipoCodigo 0001 ou se realmente existe um LICENCA ME no período informado?
Tenho certeza que não é o espaço em branco e acho que não é a versão do Firebird.
Boa Sorte!!
Gostei + 0
29/11/2014
Mauri Oliveira
O 'pseudo' erro ocorre apenas se na string do like for adicionada o espaço e qualquer letra
Gostei + 0
29/11/2014
Marisiana Battistella
A questão deve ser no dados, conforme o que o Mota descreveu...
Gostei + 0
29/11/2014
Mauri Oliveira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)