Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Oracle

Respuesta
 
Herramientas Desplegado
Antiguo 30-mar-2008, 14:32   #1 (permalink)
alexis17 ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 76
maximo

buenas tardes

estoy sacando el valor maximo de un campo pero ese campo es varchar

lo estoy haciendo asi


select concat('MA', max(substr(tipo,3))+1)
into :is_cod_tipo
from tipos
where tipo like 'MA%';


ya que los codigos son

MA245

osea que el campo tiene 5 posiciones

de esa forma me funciona bien

el problema es si tengo un codigo que sea ejemplo

MA040


entonces cuando intento sacar el valor maximo me manda es
MA41

y no

MA041

como podria solucionar eso
alexis17 está desconectado   Responder Citando
Antiguo 31-mar-2008, 14:41   #2 (permalink)
kikolice ha deshabilitado el karma
 
Avatar de kikolice
 
Fecha de Ingreso: marzo-2004
Mensajes: 1.045
Re: maximo

como el max se esta evaluando sobre un varchar por eso te regresa ese resultado, no tengo chance de probarlo pero checa si funciona con

concat('MA', max(to_number(substr(tipo,3)))+1)
__________________
Blogzote.com :-) Mi blog
kikolice está desconectado   Responder Citando
Antiguo 03-abr-2008, 08:33   #3 (permalink)
MutenRo ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 22
Re: maximo

Hola,

puedes hacerlo de esta manera (lo he comprobado y funciona):

Código:
SELECT CONCAT('MA', REPLACE(TO_CHAR(MAX(SUBSTR(TIPO,3))+1, '000'), ' ', '')) FROM TIPOS WHERE TIPO LIKE 'MA%';
Espero que te sea sirva.
MutenRo está desconectado   Responder Citando
Antiguo 04-abr-2008, 08:27   #4 (permalink)
alexis17 ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 76
Re: maximo

listo men gracias me funciono

lo que no entendi fue esta parte
de comillas
y bueno creo que dice sume y despues coloque lso 0 adelante si hay espacio

'000'), ' ', '')
alexis17 está desconectado   Responder Citando
Antiguo 07-abr-2008, 02:42   #5 (permalink)
MutenRo ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 22
Re: maximo

Con el TO_CHAR(...., '000') lo que conseguimos es que se añadan ceros delante si hace falta para obtener 3 dígitos, pero esta función devuelve también un espacio en blanco para números positivos, de ahí que sea necesario el REPLACE(....., ' ','') para quitarlo (supongo que también se podía haber utilizado la función TRIM()).
MutenRo está desconectado   Responder Citando
Antiguo 07-abr-2008, 19:35   #6 (permalink)
kikolice ha deshabilitado el karma
 
Avatar de kikolice
 
Fecha de Ingreso: marzo-2004
Mensajes: 1.045
Re: maximo

Cita:
Iniciado por MutenRo Ver Mensaje
Con el TO_CHAR(...., '000') lo que conseguimos es que se añadan ceros delante si hace falta para obtener 3 dígitos, pero esta función devuelve también un espacio en blanco para números positivos, de ahí que sea necesario el REPLACE(....., ' ','') para quitarlo (supongo que también se podía haber utilizado la función TRIM()).
y eso no se lograba con el lpad o rpad??
__________________
Blogzote.com :-) Mi blog
kikolice está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 06:28.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93