Foros del Web » Programando para Internet » ASP Clásico »

consulta sql un poco dificil

Estas en el tema de consulta sql un poco dificil en el foro de ASP Clásico en Foros del Web. saludos, tengo una base de datos en access con un campo de texto donde guardo telefonos, no lo vuelvo numerico porque me cambia los valores ...
  #1 (permalink)  
Antiguo 13/09/2003, 11:39
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 4 meses
Puntos: 4
consulta sql un poco dificil

saludos,


tengo una base de datos en access con un campo de texto donde guardo telefonos,
no lo vuelvo numerico porque me cambia los valores reales, por ejemplo

un telefono asi: 03315576899
me lo vuelve asi: 3315576899
y yo los necesito con los ceros iniciales

bueno el caso es este:

necesito hacer varias consultas sql:
* una que me seleccione los telefonos que comiencen por 00 y su longitud sea mayor a 11.

*otra que me seleccione los telefonos que comiencen por 0331.

*otra que me seleccione los que comiencen por 0 y tengan solo 10 numeros de largo.

*otra que me seleccione los que comiencen por cualquier numero y tengan solo 7 numeros de largo.


CABE RECORDAR QUE EL CAMPO NO ES NUMERICO, ES DE TEXTO POR RAZONES QUE YA EXPLIQUE,

espero me puedan colaborar, he intentado de muchas formas y no logro conseguir lo qeu quiero..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #2 (permalink)  
Antiguo 13/09/2003, 12:24
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
criterios simples que se me ocurren (aclaro: no probé nada de nada):

1- ...where telefono LIKE '00?????????%'
2- ...where telefono LIKE '0331%'
3- ...where telefono LIKE '0?????????'
4- ...where telefono LIKE '???????'


aunque me parece que es una consulta para el foro BD's
__________________
...___...
  #3 (permalink)  
Antiguo 13/09/2003, 17:54
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 4 meses
Puntos: 4
gracias por la respuesta, lo probe y no me funciono, cabe decir tambien que uso asp para manejar mi pagina con la base de datos..

use cada uno de los LIKE que me dices y no me muestra ningun registro, como podria lograrlo?''
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #4 (permalink)  
Antiguo 13/09/2003, 18:19
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 4 meses
Puntos: 4
despues de probar y probar, me funciona solo

1- ...where telefono LIKE '00?????????%' esta ya me funciona pero lo hice asi:
LIKE '00%'

2- ...where telefono LIKE '0331%' esta me funciona bien
3- ...where telefono LIKE '0?????????' esta la cambie asi:
LIKe '0[5-9]%'

4- ...where telefono LIKE '???????' esta si no me funciona para nada, necesito cualquier combinacion de numeros pero el largo no puede ser mayor ni menor a 7 digitos, recuerden que es un campo de texto, espero me puedan colaborar con esto que me falta..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #5 (permalink)  
Antiguo 13/09/2003, 20:44
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
A lo mejor si tratas con parseo de cadenas directo al campo?

WHERE left(campo, 3) = '031'


No lo he probado tampoco, pero a lo mejor funciona

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 14/09/2003, 10:50
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 4 meses
Puntos: 4
te cuento que ya lo habia probado asi antes y no me funciono, de todos modos ya lo solucione, muchas gracias a todos por la colaboracion.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #7 (permalink)  
Antiguo 16/09/2003, 19:37
Avatar de lantrax  
Fecha de Ingreso: abril-2003
Ubicación: Spain is different
Mensajes: 310
Antigüedad: 22 años, 1 mes
Puntos: 0
Bueno, una cosa, ya q si encontraste solución , no me ha quedado claro cual es la q has escogido, si nos la comentas te quedaría agradecido, tengo un problema parecido y me da también un fallo tonto.

Por otro lado, si la BBDD es de access, no se si comentas si tienes el campo del telfno con máscar, si lo tienes, comprueba que te lo guarde en el registro entero, es decir, toda la máscara, más q nada q cuando pones l máscara, te da opcion de guardar solo lo q tu introduces al registrar, es decir, en este caso sin ceros...

No se si será de alguna utilidad esto q comento.

Salu2

Lantrax
  #8 (permalink)  
Antiguo 16/09/2003, 20:55
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 4 meses
Puntos: 4
hola,

tengo una base de datos en access mi campo donde estan los telefonos es de tipo texto, y el codigo lo manejo en asp, a continuacion te muestro como manejo mi solucion:

tengo un formulario (filtro) donde se escoje el destino las opciones son: celular, local, nacional, internacional, todas.

y en la pagina donde la proceso hago estas consultas.


Código:
if request("destino") = 1 then '-->todas las llamadas	
   sql = "SELECT * FROM hyperterminal WHERE llamada_saliente LIKE '%' AND  mes LIKE '%" & _
   request.querystring("mes") & "%' AND ano LIKE '%" & _
   request.querystring("ano") & "%' Order By id DESC"
   end if
'------------------------------------------------
   if request("destino") = 2 then '-->llamada local	
   sql = "SELECT * FROM hyperterminal WHERE llamada_saliente LIKE '[1-9]%' AND  mes LIKE '%" & _
   request.querystring("mes") & "%' AND ano LIKE '%" & _
   request.querystring("ano") & "%' Order By id DESC"
   end if
'--------------------------------------------------------
   if request("destino") = 3 then '-->llamada nacional	
   sql = "SELECT * FROM hyperterminal WHERE llamada_saliente LIKE '0[5-9]%' AND  mes LIKE '%" & _
   request.querystring("mes") & "%' AND ano LIKE '%" & _
   request.querystring("ano") & "%' Order By id DESC"
   end if
'--------------------------------------------------------
   if request("destino") = 4 then '-->llamada internacional	
   sql = "SELECT * FROM hyperterminal WHERE llamada_saliente LIKE '00%' AND  mes LIKE '%" & _
   request.querystring("mes") & "%' AND ano LIKE '%" & _
   request.querystring("ano") & "%' Order By id DESC"
   end if
'------------------------------------------------
   if request("destino") = 0331 then '-->llamada celular	
   sql = "SELECT * FROM hyperterminal WHERE llamada_saliente LIKE '%" & _
   request("destino") & "%' AND  mes LIKE '%" & _
   request.querystring("mes") & "%' AND ano LIKE '%" & _
   request.querystring("ano") & "%' Order By id DESC"
   end if
'------------------------------------------------

NOTA: LOS RANGOS QUE UTILIZO SON PORQUE EN MI PAIS (COLOMBIA) LOS INDICATIVOS PARA LLAMADAS SON:
LLAMADA LOCAL:telefono(7 digitos)
LLAMADA NACIONAL:05+ciudad+telefono(7 digitos)
LLAMADA INTERNACIONAL:005+PAIS+CODIGO+telefono(7 digitos)
LLAMADA CELULAR: TODOS COMIENZAN POR 0331


espero te sirva de algo, ya lo he probado y me funciona a la perfeccion, si necesitas algo me avisas.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com

Última edición por lexus; 16/09/2003 a las 20:59
  #9 (permalink)  
Antiguo 16/09/2003, 21:15
Avatar de lantrax  
Fecha de Ingreso: abril-2003
Ubicación: Spain is different
Mensajes: 310
Antigüedad: 22 años, 1 mes
Puntos: 0
HOla

Muchas gracias. Problema subsanado. Mi problema creo q son las ' q siempre me dejo alguna en las sentencias sql.

Muchas gracias colega.

Salu2

Lantrax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:37.