SQL COM FILTRO POR NOME
Boa tarde, estou com uma duvida de como montar uma sql que me retorne todos os clientes onde por exemplo o cliente inicial é Jose e o cliente final é Roberto.
Você pode fazer algo assim
SELECT * FROM tabela WHERE campo_nome LIKE [ô]jose%roberto[ô]
SELECT * FROM tabela WHERE campo_nome LIKE [ô]jose%roberto[ô]
Não sei se entendi mas acho que o que vc quer é buscar todos os clientes que o nome esteja entre [Ô]José[Ô] e [Ô]Roberto[Ô], tipo [Ô]Fabio[Ô] e [Ô]Silvio[Ô] ficam de fora, isso?
Seria isto mesmo KERPLUNK
Tente dessa maneira:
select * from cliente where nome between [ô]joa%[ô] and [ô]Rober%[ô]
select * from cliente where nome between [ô]joa%[ô] and [ô]Rober%[ô]
Nunca tentei fazer isso, mas acho que não vai funcionar com between. Uma alternativa seria usar o código ASC das primeiras letras. Não sei que banco de dados vc tem mas a maioria tem função para retornar o código ASC de um caracter. Então seria algo como:
Select ASC(Substr(nome, 1,1)) from tabela where ASC(Substr(nome, 1,1)) < ASC([ô]J[ô]) and ASC(Substr(nome, 1,1)) > ASC([ô]R[ô])
Select ASC(Substr(nome, 1,1)) from tabela where ASC(Substr(nome, 1,1)) < ASC([ô]J[ô]) and ASC(Substr(nome, 1,1)) > ASC([ô]R[ô])
Cara, funciona. Testado e homologado.
Uso o firebird ele me retorno o seguinte erro Dynamic SQL Error SQL erro cored=104
deu erro no asc
deu erro no asc
certo, faltou o detalhe do firebird. dae não vai mesmo. o comando que passei é pra SQL server
Select ASCII_VAL(Substr(nome, 1,1)) from tabela where ASCII_VAL(Substr(nome, 1,1)) < ASCII_VAL([ô]J[ô]) and ASCII_VAL(Substr(nome, 1,1)) > ASCII_VAL([ô]R[ô])
Adaptado para firebird, acho que funciona
Adaptado para firebird, acho que funciona
ops... esqueci do substring:
Select ASCII_VAL(SUBSTRING(nome, 1,1)) from tabela where ASCII_VAL(SUBSTRING(nome, 1,1)) < ASCII_VAL([ô]J[ô]) and ASCII_VAL(SUBSTRING(nome, 1,1)) > ASCII_VAL([ô]R[ô])
Select ASCII_VAL(SUBSTRING(nome, 1,1)) from tabela where ASCII_VAL(SUBSTRING(nome, 1,1)) < ASCII_VAL([ô]J[ô]) and ASCII_VAL(SUBSTRING(nome, 1,1)) > ASCII_VAL([ô]R[ô])
Tópico encerrado , respostas não são mais permitidas