ORACLE - « Cero » como prefijo en una tabla
Resuelto
sanave
Mensajes publicados
3
Estado
Miembro
-
DROE Mensajes publicados 148 Fecha de registro Estado Miembro Última intervención -
DROE Mensajes publicados 148 Fecha de registro Estado Miembro Última intervención -
Hola,
Tengo una tabla numérica parcialmente rellena:
1- ¿Cómo es posible añadir ceros delante del número existente, sabiendo que debe estar limitado a 4 caracteres?
ejemplos:
Para 23, me gustaría 0023;
para 125, me gustaría 0125.
2- Al crear la tabla, ¿qué parámetro debe configurarse para obtener este resultado?
Gracias por vuestra ayuda...
Tengo una tabla numérica parcialmente rellena:
1- ¿Cómo es posible añadir ceros delante del número existente, sabiendo que debe estar limitado a 4 caracteres?
ejemplos:
Para 23, me gustaría 0023;
para 125, me gustaría 0125.
2- Al crear la tabla, ¿qué parámetro debe configurarse para obtener este resultado?
Gracias por vuestra ayuda...
5 respuestas
-
Es posible prefijar la representación de un número con ceros de la siguiente manera:
supongamos que tenemos una tabla COMMUNE con un campo CODE_INSEE de tipo number :
LPAD(cast(CODE_INSEE as varchar2(5 BYTE)),5,'0')
devuelve '01034' para la commune cuyo código INSEE es 1034 (Belley, en l'Ain)
Para los códigos INSEE que ocupan 5 caracteres, esta función no añadirá ningún 0. -
Hola,
¿Has probado rellenar el campo int poniendo 4 después (para decir que el int debe contener 4 dígitos)?
Si no, reemplaza el tipo por un varchar4
--
La Bretaña... el lugar más bello del mundo. -
Aquí está lo que tengo actualmente,
Nombre : COPOLE
Tipo de datos : NUMBER
Tamaño : 4
si cambio NUMBER por VARCHAR, me dice :
" ORA-01439 : una columna debe estar vacía para poder modificar su tipo de datos".
Entonces, aparentemente no puedo cambiarlo a mitad de camino el parámetro !!
(Para Bretaña, ¡estoy de acuerdo!) -
Eso es lo que temía....!!
Bien, en cualquier caso, gracias por tu ayuda,
solo me queda ponerme a trabajar... -
Hola,
una solución entre otras:
este valor debe almacenarse en la base en este formato?
Si no, entonces solo en la visualización:
SELECT TO_CHAR(COPOLE,'0000') FROM dual; ----> 0125
Efectivamente no se puede cambiar el tipo de una columna si ya está rellena.
Solución
1- Renombrar la columna COPOLE a A_SUPP
Eliminar el índice si la columna está indexada.
ALTER TABLE table_name RENAME COLUMN copole TO a_supp;
2- Creación de una nueva columna COPOLE de tipo VARCHAR2
ALTER TABLE table_name ADD (copole VARCHAR2(4));
3- actualización de esta columna con transformación
UPDATE table_name set COPOLE = TO_CHAR(a_supp,'0000')
4 - Eliminación de la columna A_SUPP
5- Reindexación de la columna COPOLE
DROE
http://www.dba-ora.fr/article-function-sql-oracle-to_char-70874668.html
--
La experiencia es el nombre que cada uno da a sus errores