Array
(
)

Usando comando Like

Barbara.michele
   - 29 set 2004

Pessoal,

Tenho um campo em uma tabela que guarda o telefone de clientes. O telefone é um campo do tipo varchar2 e é guardado da seguinte forma: 254-6395, 254-2478, 455-4859...
Como posso montar uma consulta para pesquisar todos os clientes que tem o telefone que comece com 254 ou com 455 ou qualquer outro prefixo que será passado como parâmetro para a consulta, mas se houver algum telefone que no final possua a mesma combinação que no prefixo passado, não pode ser exibido no resultado da query. Ou seja, exibir somente os telefones que comecem com 455. Se houver um cliente com telefone que seja = a 452-2455, ele deverá ser ignorado.

SELECT *
FROM CLIENTES
WHERE FONE_CLIENTE LIKE ????

Consigo fazer isso com o Like ou há outro comando melhor?

Obrigada


Afarias
   - 29 set 2004

SELECT *
FROM CLIENTES
WHERE FONE_CLIENTE LIKE ´345¬´


ou


SELECT *
FROM CLIENTES
WHERE FONE_CLIENTE STARTING ´345´

(só não lembro se ORACLE (acho q é isso q está usando) suporta a sintaxe STARTING)


T+


Vinicius2k
   - 29 set 2004

Colega,

Instrução :
#Código

select 
{lista de campos}
from
TABELA
where
CAMPO like :texto

Execução :
#Código
SuaQuery.Close;
SuaQuery.ParamByName(´texto´).AsString:= Texto + ´¬´;
SuaQuery.Open


o ¬ é o caracter coringa que determina qual parte do campo ´não importa´... e ele pode variar dependendo do banco de dados...
Iniciado por -> Texto + ´¬´
Terminado por -> ´¬´ + Texto
Qualquer parte -> ´¬´ + Texto + ´¬´

T+


Paulo_amorim
   - 30 set 2004

Olá

Se seus prefixos têm sempre 3 números, pode-se fazer a seguinte query - estou supondo banco ORACLE, qualquer coisa substitua a função Substr pela adequada

#Código

SELECT * FROM fone_cliente
WHERE substr(fone,1,3) = :p1
AND substr(fone,5,7) NOT LIKE ´¬´ || :p1 || ´¬´


#Código
Query1.ParamByName(´p1´).AsString := <seu parametro>


Espero que ajude
Até+