287 votes

Quelle est la différence entre varchar et varchar2 dans Oracle ?

Quelle est la différence entre varchar et varchar2 ?

4 votes

Quelles sont les chances que cette question ait été inspirée par cet article de blog ? joelonsoftware.com/articles/GuerrillaInterviewing3.html

373voto

Quassnoi Points 191041

Pour l'instant, ce sont des synonymes.

VARCHAR est réservé par Oracle pour soutenir la distinction entre NULL et une chaîne vide à l'avenir, comme ANSI la norme prescrit.

VARCHAR2 ne fait pas de distinction entre un NULL et une chaîne vide, et ne le fera jamais.

Si vous comptez sur la chaîne vide et NULL étant la même chose, vous devez utiliser VARCHAR2 .

46 votes

Je n'avais pas entendu ce raisonnement avant, c'est utile. Merci. Pour mémoire, il est toujours totalement ridicule que le principal type de caractère dans Oracle soit "varchar2". Quelqu'un d'autre ne trouve-t-il pas que c'est une terrible maladresse ? On dirait que c'est comme ça que j'aurais résolu un problème lors de ma première semaine d'apprentissage de la programmation.

8 votes

@Ian : le type principal est VARCHAR2 parce qu'il n'y a actuellement aucun type qui se comporte comme VARCHAR devrait. En fait, vous ne devriez pas utiliser VARCHAR jusqu'à ce qu'il soit mis en œuvre correctement.

12 votes

Merci, @Quassnoi. Donc je suppose que la partie stupide est qu'Oracle n'a pas un VARCHAR approprié comme toutes les autres bases de données, alors ? Il y a quelque chose de stupide qui se passe ici, j'en suis sûr ... :)

43voto

Brian Points 1335

Actuellement, VARCHAR se comporte exactement de la même manière que VARCHAR2. Toutefois, le type VARCHAR ne doit pas être utilisé car il est réservé pour un usage futur.

Tiré de : Différence entre CHAR, VARCHAR et VARCHAR2

0 votes

@PhilipRego VARCHAR ne devrait pas être utilisé. Je l'ai édité

0voto

Nisar Points 1149

VARCHAR2

est utilisé pour stocker des chaînes de caractères de longueur variable. La longueur de la valeur de la chaîne sera stockée sur le disque avec la valeur elle-même.

variable x varchar2(10)
begin
 :x := 'hullo';
end;
/

VARCHAR

se comporte exactement de la même manière que VARCHAR2. Cependant, ce type ne doit pas être utilisé car il est réservé pour une utilisation future.

-1voto

Jovan Points 91

Pour l'instant, ils sont exactement les mêmes. C'est une variable pré-réservée qui pourra être utilisée plus tard dans le futur.

-5voto

Dinuka Points 1

La principale différence entre Varchar et Varchar2 est la suivante Varchar2 alloue la mémoire dynamiquement .

ex : lorsque vous déclarez Varchar(100) alors à l'étape d'initialisation il réserve 100 unités de votre mémoire. mais lorsque vous déclarez Varchar(100) et que vous mettez une chaîne de 20 caractères, cela ne prend que 20 unités de votre mémoire et augmentera au fur et à mesure que la chaîne grandira.

C'est le point clé de l'utilisation de Varchar2 pour la plupart des conceptions de bases de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X