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

Ordenar cadenas de texto con números

Estas en el tema de Ordenar cadenas de texto con números en el foro de Mysql en Foros del Web. Mi problema es el siguiente, tengo una tabla con un campo de texto, en el cual lo normal es que se inserten cadenas así: 1 ...
  #1 (permalink)  
Antiguo 15/02/2012, 11:39
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años
Puntos: 1
Ordenar cadenas de texto con números

Mi problema es el siguiente, tengo una tabla con un campo de texto, en el cual lo normal es que se inserten cadenas así:

1 - tal tal tal
3 - sdfsdfsdf
15 - sdfsdfsd
201 - sdfsadfsdf
2 - jklasjlsdfsdf

La idea es obtener una consulta en la que te devuelva ordenada ese campo, pero solo ordenándolo por el número es decir así:

1 - tal tal tal
2 - jklasjlsdfsdf
3 - sdfsdfsdf
15 - sdfsdfsd
201 - sdfsadfsdf

He mirado sobre expresiones regulares, pero no se si se podría hacer.
Hay que tener en cuenta los números de varias cifras, para que no te lo ordene así: 1, 10, 11, 2, 3...

Gracias, un saludo.
  #2 (permalink)  
Antiguo 15/02/2012, 12:16
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: Ordenar cadenas de texto con números

La única forma es partir la cadena separando el número.
En realidad es que estás creando mal ese dato: El ID numerico debería estar en una columna y el texto en otra. No hay otro modo facil de lograrlo.
¿Por qué los tienes así?
__________________
¿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 15/02/2012, 12:16
Avatar de timoteo666  
Fecha de Ingreso: agosto-2011
Ubicación: /home/Gdl
Mensajes: 242
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Ordenar cadenas de texto con números

Lo correcto es que debes tener un id auto_increment para estos casos o insertar el numero en otro campo, vero en fin en gustos se rompen generos....

mira algo xpress seria asi:
SELECT
texto,
TRIM(SUBSTRING_INDEX(texto,'-',1))orden
FROM orden_newbie
ORDER BY orden;

esto claro si tienes el '-' dentro del campo, sino obtén la posición del espacio entre los numero y el string, corta el string hasta esa posicion, asigna el result a un nuevo campo para ordernarlo, y ordena por ese campo... como en el ejemplo que te puse espero te ayude, saludos.
__________________
( + ) lineas de código ( - ) televisión
  #4 (permalink)  
Antiguo 15/02/2012, 12:25
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: Ordenar cadenas de texto con números

Buena solución, es un "parche", pero puede funcionar.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 15/02/2012, 12:28
Avatar de timoteo666  
Fecha de Ingreso: agosto-2011
Ubicación: /home/Gdl
Mensajes: 242
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Ordenar cadenas de texto con números

xD gracias gnzsoloyo, cuando dices parche lo primero que pienso es en windo


Cita:
Iniciado por gnzsoloyo Ver Mensaje
Buena solución, es un "parche", pero puede funcionar.

__________________
( + ) lineas de código ( - ) televisión
  #6 (permalink)  
Antiguo 15/02/2012, 12:34
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: Ordenar cadenas de texto con números



Eso me recuerda lo que me dijo un profesor: "Windows no es un S.O. Es una librería de parches..."
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 15/02/2012, 14:51
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años
Puntos: 1
Respuesta: Ordenar cadenas de texto con números

Cita:
Iniciado por timoteo666 Ver Mensaje
Lo correcto es que debes tener un id auto_increment para estos casos o insertar el numero en otro campo, vero en fin en gustos se rompen generos....

mira algo xpress seria asi:
SELECT
texto,
TRIM(SUBSTRING_INDEX(texto,'-',1))orden
FROM orden_newbie
ORDER BY orden;

esto claro si tienes el '-' dentro del campo, sino obtén la posición del espacio entre los numero y el string, corta el string hasta esa posicion, asigna el result a un nuevo campo para ordernarlo, y ordena por ese campo... como en el ejemplo que te puse espero te ayude, saludos.
Ya tiene ID Autoincrement, y no corresponde con ese número, ya que ese número puede tenerlo o puede no tenerlo, puede tener texto o no tenerlo... puede incluso tener más de un nº igual...

De todas formas creo que lo mejor va a ser crear otro campo.

Gracias.
  #8 (permalink)  
Antiguo 17/02/2012, 12:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Ordenar cadenas de texto con números

Tienes una solución completa que es ordenar con el substring_index, pero haciendo el casting a número.

SELECT
texto,
CAST(SUBSTRING_INDEX(texto,' - ',1) AS UNSIGNED) orden
FROM orden_newbie
ORDER BY orden;

Etiquetas: cadenas, tabla, campos
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 15:15.