Oracle
 sql >> Base de données >  >> RDS >> Oracle

pourquoi un tableau associatif indexé par VARCHAR2 ne stocke pas plus de 9 éléments

Vous voyez cela parce que l'index est une chaîne ; le 15ème élément que vous ajoutez a l'index '15', pas le numéro 15; et avec la comparaison de chaînes, '9' est supérieur à '15'. Donc, last affiche la chaîne la plus élevée valeur, qui est toujours '9'. Comme le dit @Koen, il s'agit de le comportement documenté :

où 'le plus élevé' et 'le plus bas' sont basés sur comparaison de chaînes .

Cela n'a rien à voir avec le nombre il y a des éléments (ce qui est clairement 15); c'est uniquement le comportement de la valeur d'index qui est affecté.

Si vous avez plus d'éléments, vous verrez le last la valeur change lorsque vous dépassez 89, car '90' est une valeur supérieure à '9' et '91' est supérieur à '90' ; mais quand vous dépassez 99, il y reste jusqu'à ce que vous atteigniez 900. Et ainsi de suite.

db<>violon