Usando comando Like
29/09/2004
0
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
Barbara.michele
Posts
29/09/2004
Afarias
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+
29/09/2004
Vinicius2k
Instrução :
select {lista de campos} from TABELA where CAMPO like :texto
Execução :
SuaQuery.Close; SuaQuery.ParamByName(´texto´).AsString:= Texto + ´¬´; SuaQuery.Open
o [b:6fbb80866e]¬[/b:6fbb80866e] é o caracter coringa que determina qual parte do campo ´não importa´... e ele pode variar dependendo do banco de dados...
Iniciado por -> Texto + [b:6fbb80866e]´¬´[/b:6fbb80866e]
Terminado por -> [b:6fbb80866e]´¬´[/b:6fbb80866e] + Texto
Qualquer parte -> [b:6fbb80866e]´¬´[/b:6fbb80866e] + Texto + [b:6fbb80866e]´¬´[/b:6fbb80866e]
T+
30/09/2004
Paulo_amorim
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
SELECT * FROM fone_cliente WHERE substr(fone,1,3) = :p1 AND substr(fone,5,7) NOT LIKE ´¬´ || :p1 || ´¬´
Query1.ParamByName(´p1´).AsString := <seu parametro>
Espero que ajude
Até+
Clique aqui para fazer login e interagir na Comunidade :)