Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda con consulta between

Estas en el tema de ayuda con consulta between en el foro de Mysql en Foros del Web. buenas, tengo el siguiente problema: tengo un campo en la bd potencia, que es un varchar y tiene valores del tipo: 2.500, 3.500, 4.500.... os ...
  #1 (permalink)  
Antiguo 30/11/2007, 04:10
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
ayuda con consulta between

buenas, tengo el siguiente problema:

tengo un campo en la bd potencia, que es un varchar y tiene valores del tipo:

2.500, 3.500, 4.500....

os preguntareis pq utilizo varchar y no INT, no? pq tiene que salir el ., y pq hay algunos datos que son tal que asi:

1.500 / 2.000, 2.500x2, 3.500+2.500...

quiero hacer un SELECT guiado por un select, en el cual haya un rango de valores sobre los que encontrar potencias. el problema es que al hacer:

BETWEEN 1.500 AND 3.000, no me sale el registro que tiene como dato 3.500+2.500 suponqo que es pq el 3.500 esta antes que el 2.500.. puedo modificarlo de alguna manera?

saludos
  #2 (permalink)  
Antiguo 30/11/2007, 08:56
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 2 meses
Puntos: 55
Re: ayuda con consulta between

probablemnete el attr q estas utlizando para la busqueda deba ser una descripcion y utilizar otro para guardar la potencia y poder hacer el between
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 30/11/2007, 10:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Re: ayuda con consulta between

la cláusula BETWEEN opera como cotas de rango cerrado superior e inferior. Incluyen los dos topes, cuando buscar un valor que está entre "1.500" y "3.000", como la comparación es byte a byte tomando por el primer valor de la izquierda, NUNCA podría considerar el dato en cuestión: Simplemente está fuera del rango.

Para que la consulta funcionara realmente, deberías replantear completamente la construcción de la tabla.

Me resulta un poco extraña la explicación de que debe salir el punto ("."), eso solamente tiene sentido si la salida de datos es tomada después sin procesar en la interfase, cosa bastante extraña. En realidad, la representación del dato en pantalla es problema de la interfase, no de la base de datos, y es en la interfase donde debe resolverse cómo se representa el número.
Al respecto, te sugiero que veas el uso de las funciones FORMAT, tanto en VB.Net como en MySQL, así como las de CONCAT, CAST y CONVERT, para independizar el uso de la tabla de la representación del dato (ten en cuenta que al usar VARCHAR estás produciendo un desperdicio de espacio de almacenamiento: un INT usa 4 bytes (2^32) contra 255 bytes).
¿En qué consiste esta aplicación de BD?

Última edición por gnzsoloyo; 30/11/2007 a las 11:02
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 22:30.