Ver Mensaje Individual
  #8  
Antiguo 30-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por José Luis Garcí Ver Mensaje
...
El problema es que el código de cliente normalmente es número únicamente, pero podría contener otros caracteres en cualquier momento, ya que un cliente con dos centros podría ser 185 y 185-2 ó 185-B
...
Hola José.

Si el código se compone de números solamente se soluciona rellenando con caracteres por la izquierda.
Teniendo los valores: 10, 1, 22 15, 100, 189, 33, 181 en la columna CODIGO, esta consulta:
Código SQL [-]
SELECT CODIGOCLIENTE /* 6 caracteres para el ejemplo */
FROM CLIENTES
ORDER BY SUBSTRING('000000' FROM 1 FOR 6 - CHAR_LENGTH(CODIGOCLIENTE)) || CODIGOCLIENTE
devuelve: 1, 10, 15, 22, 33, 100, 181, 189 que es lo que buscas.

Pero si el código es alfanumérico no le veo la vuelta... Ya que por ejemplo 185-B, qudará siempre detrás de cualquier valor numérico de 4 dígitos (9999) y no detrás 185 como se esperaría.

Claro que lo anterior no tiene sentido, por que si fueran sólo números bastaría con declarar CODIGO como INTEGER y ordenarlos numericamente... es sólo para graficar la imposibilidad de ordenar "numericamente" datos alfanuméricos.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-04-2014 a las 21:44:38.
Responder Con Cita