SQL COM FILTRO POR NOME

PAULOHSV 05/08/2011 14:29:10
#380912
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.
NETMANIA 05/08/2011 14:36:51
#380913
Você pode fazer algo assim

SELECT * FROM tabela WHERE campo_nome LIKE [ô]jose%roberto[ô]
KERPLUNK 05/08/2011 14:42:14
#380915
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?
PAULOHSV 05/08/2011 14:48:40
#380917
Seria isto mesmo KERPLUNK
OCTOPUS 05/08/2011 14:57:33
#380918
Tente dessa maneira:

select * from cliente where nome between [ô]joa%[ô] and [ô]Rober%[ô]
KERPLUNK 05/08/2011 15:13:37
#380919
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[ô])
OCTOPUS 05/08/2011 15:24:42
#380922
Cara, funciona. Testado e homologado.
PAULOHSV 05/08/2011 15:24:58
#380923
Uso o firebird ele me retorno o seguinte erro Dynamic SQL Error SQL erro cored=104

deu erro no asc
OCTOPUS 05/08/2011 15:26:54
#380924
certo, faltou o detalhe do firebird. dae não vai mesmo. o comando que passei é pra SQL server
KERPLUNK 05/08/2011 15:50:34
#380925
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
KERPLUNK 05/08/2011 15:52:34
#380926
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[ô])
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas