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

Oracle y campos alfanuméricos

Estas en el tema de Oracle y campos alfanuméricos en el foro de Bases de Datos General en Foros del Web. Hola, tengo una tabla con un campo de talla que admite tanto el formato XL, L,... como 038, 040,... y quería saber como puedo formatearlo ...
  #1 (permalink)  
Antiguo 14/11/2008, 05:32
Avatar de Piruleta  
Fecha de Ingreso: enero-2008
Ubicación: En Madrid
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 0
Exclamación Oracle y campos alfanuméricos

Hola, tengo una tabla con un campo de talla que admite tanto el formato XL, L,... como 038, 040,... y quería saber como puedo formatearlo independientemente del valor que el usuario me haya tecleado.

Me refiero a la hora de realizar un insert...

Si me teclea 38 grabar 038 y si pone XL grabarlo con 3 posiciones añadiendo espacios... no en PL/SQL... en una instrucción solamente. Si se puede.
  #2 (permalink)  
Antiguo 14/11/2008, 05:55
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: Oracle y campos alfanuméricos

_Eso implicaría:
- Usar un tipo de dato VARCHAR2(3)
- Administrar el formato en la aplicación. Intentarlo en la sentencia es perder el tiempo, en programación se resuelve mucho mejor y más rápido, además de no hacerle hacer a Oracle tareas superfluas para su funcionamiento. Simplemente lo pones en el método de validación del dato.
__________________
¿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 14/11/2008, 07:36
Avatar de Piruleta  
Fecha de Ingreso: enero-2008
Ubicación: En Madrid
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 0
Exclamación Respuesta: Oracle y campos alfanuméricos

La cuestión es que el usuario en una pantalla me introduce la talla, en cualquiera de los dos formatos que antes he planteado, y yo al grabarla debo hacerlo con el formato numérico (038) o con el de cadena (XLb, siendo b blanco). ¿Sabes como puedo?
  #4 (permalink)  
Antiguo 14/11/2008, 07:42
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: Oracle y campos alfanuméricos

Insisto: Eso lo tienes que resolver en la aplicación ¿No has programado ningún método para validar la entrada del usuario?
El tema es resolver si lo que te está entrando es un dato correcto: Simplemente saber si ingresó sólo números, caso en el que lo formateas con ceros, o si ingresó S, M, L, XL, XXL, o cualquier string aceptable, caso en el que simplemente lo envías. No nos olvidemos que las aplicaciones se deben crear APDEEI, o como se dice en Argentina: APDB (el acrónimo lo puedo explicar por línea privada, pero trata de imaginarlo).
Es la parte aburrida y fundamental de programa: Validar.
En cualquiera de las dos situaciones mencionadas, la cosa es asunto de la aplicación.
__________________
¿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 17/11/2008, 06:06
Avatar de Piruleta  
Fecha de Ingreso: enero-2008
Ubicación: En Madrid
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 0
Exclamación Respuesta: Oracle y campos alfanuméricos

Sería lo suyo, sí... pero la herramienta que estoy usando para desarrollar mi programa no permite hacer muchas cábalas... y es algo así como un lenguaje de consultas... pero no permite hacer PL/SQL... Seguiré buscando...
Gracias.
  #6 (permalink)  
Antiguo 17/11/2008, 07:04
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Oracle y campos alfanuméricos

Código:
select rpad('XL',3,' ') from dual;
select lpad('38',3,' ') from dual;
Saludos
  #7 (permalink)  
Antiguo 17/11/2008, 07:32
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: Oracle y campos alfanuméricos

Cita:
Iniciado por Piruleta Ver Mensaje
Sería lo suyo, sí... pero la herramienta que estoy usando para desarrollar mi programa no permite hacer muchas cábalas... y es algo así como un lenguaje de consultas... pero no permite hacer PL/SQL... Seguiré buscando...
Gracias.
¿Podrías aclarar qué estás usando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 17/11/2008, 07:36
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: Oracle y campos alfanuméricos

Cita:
Iniciado por matanga Ver Mensaje
Código:
select rpad('XL',3,' ') from dual;
select lpad('38',3,' ') from dual;
Saludos
Muy bonito, pero el problema es determinar si lo que está ingresando en un número o un string...
Yo le sugeriría usar INSTR() en un ciclo para verificar que no haya letras o números y de allí partir.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 17/11/2008, 09:32
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Oracle y campos alfanuméricos

Código:
select decode(
 translate(valor,'*0123456789','*'),
 null,
 lpad(valor,3,' '),
 rpad(valor,3,' ')
 )
 from dual
Saludos
  #10 (permalink)  
Antiguo 18/11/2008, 01:34
Avatar de Piruleta  
Fecha de Ingreso: enero-2008
Ubicación: En Madrid
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Oracle y campos alfanuméricos

Hola a todos,

creo que con esto último tengo resuelto el problema. Muchas gracias por todo.

  #11 (permalink)  
Antiguo 18/11/2008, 04:52
Avatar de Piruleta  
Fecha de Ingreso: enero-2008
Ubicación: En Madrid
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Oracle y campos alfanuméricos

Por cierto, al final lo he hecho así, por si a alguien le sirve:

SELECT DECODE(SUBSTR(TRIM(TRANSLATE(TRIM(<campo talla>), '01234567890', '**********')), 1, 1), '', ' ', '*', TRIM(TO_CHAR(<campo talla>, '000')), LPAD(<campo talla>, 3)) FROM DUAL;
porque al final el campo talla no se sabe si va a ser numérico (038, 38,...) o alfabético (XL, bXL, L,... siendo b blanco).

Gracias por vuestra colaboración.
Salu2.
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 16:08.