2016-11-10 2 views
1

Vous souhaitez insérer des données dans la colonne de type de données de numéro d'oracle comme '001' au lieu de '1'.Vous souhaitez insérer des données dans la colonne de type de données de numéro d'oracle comme '001' au lieu de '1'

Voici mon code:

create table TEMP2 (id number); 

INSERT INTO TEMP2 VALUES(001); 

Lors de l'exécution:

SELECT * FROM TEMP2; 

La sortie apparaît comme:

ID 
1 

Je veux conserver le numéro comme '001' au lieu de ' 1'.

+3

Un type de données numérique n'a pas de zéros en tête, c'est un format d'affichage. Vous avez besoin de 'TO_CHAR' avec un format qui affiche les zéros en tête ou' LPAD'. – dnoeth

+0

Les formats d'affichage sont le travail de l'application cliente. Si vous voulez un format d'affichage cohérent, vous pouvez écrire une vue avec une expression 'to_char'. Le stockage n'y entre pas. –

Répondre

4

Vous ne devez pas stocker des informations utilisées uniquement à des fins d'affichage. Si c'est un nombre, alors rangez-le comme un nombre.

Vous pouvez toujours formater la sortie lors de l'affichage des valeurs:

SELECT to_char(id, 'FM000') 
FROM TEMP2; 

Si vous ne voulez pas faire que chaque fois que vous exécutez une sélection, créez une vue:

create view formatted_temp 
as 
SELECT to_char(id, 'FM000') 
FROM TEMP2; 

Ou créez une colonne calculée qui le fait pour vous:

alter table temp2 
    add formatted_id generated always as (to_char(id, 'FM000')); 
0

Vous pouvez remplacer la colonne par VARCHAR2. Que cela soit une bonne solution dépend de vos besoins