ORACLE - « Cero » como prefijo en una tabla

Resuelto
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...

5 respuestas

  1. 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.
    2
    1. 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.
      0
      1. 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!)
        0
        1. En ese caso, si tu tabla no es demasiado grande ni demasiado llena, puedes recrearla y volver a llenarla, pero con el tipo correcto para la columna que te interesa.
          0
      2. Eso es lo que temía....!!

        Bien, en cualquier caso, gracias por tu ayuda,
        solo me queda ponerme a trabajar...
        0
        1. 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
          0