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

[SOLUCIONADO] Un select Distinct BETWEEN raro

Estas en el tema de Un select Distinct BETWEEN raro en el foro de Mysql en Foros del Web. Hola que tal bueno como siempre cuando no tengo mas ideas de como sacar las cosas acudo a la comunidad y un saludo a todos ...
  #1 (permalink)  
Antiguo 02/09/2013, 14:02
Avatar de emilio_viguri  
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 3
Pregunta Un select Distinct BETWEEN raro

Hola que tal bueno como siempre cuando no tengo mas ideas de como sacar las cosas acudo a la comunidad y un saludo a todos antes que nada...

Buen la cuestión es la siguiente intento hacer una consulta que me muestre todos los números de Rremicion que tengo en la base de datos según un rango indicado.

Datos y detalles del campo en mi tabla.
-Tengo mas campos en esta tabla "partidas"
-El tipo de datos es varchar
-Este campo no es unico se repite varias veces por ello uso el DISTICT
-Este campo tiene una letra antes de cada numero.

Datos en la tabla
T319
T322
T331
T323
T321
T324
T325
T330
T333
T342
T347
T346
T0453
T0400
T0454
T0395
T0397
T0398

Código MySQL:
Ver original
  1. select Distinct Rrappyd from partidas WHERE Rrappyd BETWEEN (Rrappyd LIKE '_400')  AND (Rrappyd LIKE '_450')

lo que requeriarai es que me arojara unicamente los datos de T_400 al T_450 si me explico pero con esta consula me aroja todos los datos y no solo los ragos de 400 a 450.
  #2 (permalink)  
Antiguo 02/09/2013, 14:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Un select Distinct BETWEEN raro

BETWEEN se aplica a rangos discretos, y tu estás usandolo para cadenas de texto variables. No es funcional.
Para lograr la consulta hay que descartar toda la parte no numérica de su valor y convertirlo en un numero. Algo como:
Código MySQL:
Ver original
  1. SELECT DISTINCT Rrappyd
  2. FROM partidas
  3. CAST(MID(Rrappyd, 3, LENGTH(Rrappyd)-2) AS UNSIGNED) BETWEEN 400 AND 450
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/09/2013, 14:42
Avatar de emilio_viguri  
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 3
De acuerdo Respuesta: Un select Distinct BETWEEN raro

Bueno y ya al final le puse que lo ordenar pero si me sirvió muchas gracias...

Código MySQL:
Ver original
  1. SELECT DISTINCT Rrappyd
  2. FROM partidas
  3. CAST(MID(Rrappyd, 3, LENGTH(Rrappyd)-2) AS UNSIGNED) BETWEEN 400 AND 450
  4. ORDER BY Rrappyd
  #4 (permalink)  
Antiguo 02/09/2013, 15:36
Avatar de emilio_viguri  
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 3
Pregunta Respuesta: Un select Distinct BETWEEN raro

Bueno y si quisiera usar del 400 al 1000 teniendo en cuenta que los valores son

T0408
T1000

el LENGTH(Rrappyd)-2 tendría que ser LENGTH(Rrappyd)-1 ?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
BETWEEN se aplica a rangos discretos, y tu estás usandolo para cadenas de texto variables. No es funcional.
Para lograr la consulta hay que descartar toda la parte no numérica de su valor y convertirlo en un numero. Algo como:
Código MySQL:
Ver original
  1. SELECT DISTINCT Rrappyd
  2. FROM partidas
  3. CAST(MID(Rrappyd, 3, LENGTH(Rrappyd)-2) AS UNSIGNED) BETWEEN 400 AND 450
  #5 (permalink)  
Antiguo 02/09/2013, 17:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Un select Distinct BETWEEN raro

La solucion sigue siendo la misma, en tanto haya un único valor alfabetico inicial, o una cantidad fija. Si es variable en longitud, la opción ya no sirve.
En ese caso mi recomendación es que implementes algo como lo que verás ejemplificado en las FAQs de MySQL: Eliminar cadenas y recuperar un entero
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: cast, distinct, select
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 04:49.