Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2006
Roilo Roilo is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mayarí, Cuba
Posts: 143
Poder: 19
Roilo Va por buen camino
Smile 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.
Responder Con Cita
  #2  
Antiguo 05-04-2006
alapaco alapaco is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Buenos Aires
Posts: 287
Poder: 0
alapaco Va por buen camino
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..
Responder Con Cita
  #3  
Antiguo 05-04-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Mira este ejemplo:
Código SQL [-]
Select Substring(Codigo from 5 for 7), nombre, Nif
from Clientes
order by 1 desc

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 05-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El problema que veo es que a juzgar por la muestra que pone Roilo, no todos los valores tienen la misma longitud.

// Saludo
Responder Con Cita
  #5  
Antiguo 05-04-2006
alapaco alapaco is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Buenos Aires
Posts: 287
Poder: 0
alapaco Va por buen camino
Cita:
Empezado por roman
El problema que veo es que a juzgar por la muestra que pone Roilo, no todos los valores tienen la misma longitud.

// Saludo
Pero en el ejemplo que postee yo, tomo los últimos 3, cual sería el problema ??
Responder Con Cita
  #6  
Antiguo 05-04-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 05-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por alapaco
Pero en el ejemplo que postee yo, tomo los últimos 3, cual sería el problema ??
¡Ah! Disculpa, iba a comentar al respecto y lo olvidé. Tu solución no tiene ningún problema, es DBase quien lo tiene Que yo recuerde no cuenta con la función LENGTH.

// Saludos
Responder Con Cita
  #8  
Antiguo 06-04-2006
JOSEA JOSEA is offline
Miembro
 
Registrado: may 2004
Posts: 12
Poder: 0
JOSEA Va por buen camino
Tomando como partida el de marcoszorrilla
Cita:
Select numero,substring(cast((numero+1000000000) as char(10)) from 8 for 3)
from clientes
order by 2
Responder Con Cita
  #9  
Antiguo 06-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #10  
Antiguo 06-04-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #11  
Antiguo 10-04-2006
Roilo Roilo is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mayarí, Cuba
Posts: 143
Poder: 19
Roilo Va por buen camino
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.
Responder Con Cita
  #12  
Antiguo 12-04-2006
FOURIER FOURIER is offline
Miembro
 
Registrado: dic 2005
Posts: 40
Poder: 0
FOURIER Va por buen camino
:)

se me ocurre

select * from Tabla order by int(right(campoordenar,3));
Responder Con Cita
  #13  
Antiguo 12-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #14  
Antiguo 04-09-2006
Roilo Roilo is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mayarí, Cuba
Posts: 143
Poder: 19
Roilo Va por buen camino
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 :

Código SQL [-]
Select numero,substring(cast((numero+1000000000) as char(10)) from 8 for 3) from clientes
order by 2;



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.

Última edición por Roilo fecha: 04-09-2006 a las 21:52:20.
Responder Con Cita
  #15  
Antiguo 05-09-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código SQL [-]
Select Iva, SubString(Cast(iva + 1000000000 as Char(10)) from 8 for 3)
From Factura
Order by 2

Esto me funciona perfectamente.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Los últimos cuarenta temas del ClubDelphi en formato RSS dec Noticias 8 25-12-2005 23:12:24
Numeros de registros...¿? CarlosHernandez Conexión con bases de datos 3 03-08-2005 18:31:51
Convertir Numeros dison Conexión con bases de datos 1 10-11-2004 19:07:45
¿¿Redondear números?? Magneto Varios 1 04-12-2003 05:58:00
numeros aleatorios emeritos Varios 1 24-11-2003 15:09:43


La franja horaria es GMT +2. Ahora son las 00:51:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi