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,

      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
      1. Eso es lo que temía....!!

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