![]() |
Ordenar por los 3 ultimos numeros
Un Abraso al Foro.
FELICIDADES por el nuevo ambiente. Ok. Tengo una tabla DBF, en ella hay un campo que guarda un codigo para cada registro. Quisiera obtener una consulta ordenada teniendo en cuenta los tres ultimos números de ese codigo ejemplo: 5101 8101 9101 102 5102 103 5103 8103 si comprendieron la idea les agradeceria que me dijeran como lo puedo lograr. Gracias de antemano. |
Te paso un ejemplo:
SELECT COL1, SUBSTR (COL1, LENGTH (COL1) - 2) COLUMNA_ORDENADA FROM TABLA1 ORDER BY 2 Eso anda en Oracle...aunque no se si se puede hacer con archivos DBF.. |
Mira este ejemplo:
Un Saludo. |
El problema que veo es que a juzgar por la muestra que pone Roilo, no todos los valores tienen la misma longitud.
// Saludo |
Cita:
|
Pues que From indica desde que número empezamos y si los números no son del mismo ancho no funcionará, voy a hacer otras pruebas a ver si logro algo.
Un Saludo. |
Cita:
// Saludos |
Tomando como partida el de marcoszorrilla
Cita:
|
MAESTRO JOSEA, en estos momentos me quito el sombrero y me pongo de pie. Pensé que esto iba a ser imposible con dbase o paradox pero ya veo que no. El único pero que podría tener esto es que hay que conocer la longitud máxima que pudieran tener los códigos, pero normalmente esto se sabe. Tu solución no sólo da un método para extrare caracteres de derecha a izquierda sino también sirve para una función tipo PAD también muy requerida. Sólo hay que notar, en esta solución, que si el campo original es de tipo CHAR hay que hacer antes otro CAST a INT.
¡Buenísimo truco! // Saludos |
Es curioso pero estuve implementando algo parecido, ya que lo que tenía claro es que el funcionamiento dependia de la longitud homegenea de los números, utilice Cast y Substring pero finalmente no me salio y como era tarde lo dejé, pero me alegro de que alguien lo haya llevado a buen término.
Un Saludo. |
Gracias
Una vez más me impresionan.
Todo ha quedado resuelto con la solución de Josea (FELICIDADES) a ti y al resto del colectivo. Un abraso. |
:)
se me ocurre
select * from Tabla order by int(right(campoordenar,3)); |
FOURIER: lo que sucede es que el sql para manejar dbase no cuenta con la función right; de hecho casi no cuenta con ninguna función para cadenas como no sea substring. Por ello es que hay que recurrir a métodos tan rebuscados como los ya descritos.
// Saludos |
Saludos
Hola, después de casi 4 meses de terminar este hilo, lo retomo porque me ha surgido una nueva. Resulta que ahora estoy conectado a un servidor local MySQL, y este tan discutido código ahora no me corre. Me da un herror en el código de JOSEA :
:confused: el error de sintaxis me da serca de : (10)) from 8 for ... Tengo más o menos entendido que las sintaxis SQL no son las mismas para los diferentes motores de BD,me gustaría que me orientaran al respecto, porque tambien pienso excursionar en MS SQL Server. GRACIAS de antemano. |
Esto me funciona perfectamente. Un Saludo. |
La franja horaria es GMT +2. Ahora son las 00:40:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi