Oracle
 sql >> Datenbank >  >> RDS >> Oracle

warum ein von VARCHAR2 indiziertes assoziatives Array nicht mehr als 9 Elemente speichert

Sie sehen das weil der Index ist eine Zeichenfolge; das 15. Element, das Sie hinzufügen, hat den Index '15', nicht die Nummer 15; und beim Stringvergleich ist '9' größer als '15'. Also, last zeigt die höchste Zeichenfolge Wert, der immer noch '9' ist. Wie @Koen sagt, ist dies das dokumentierte Verhalten :

wobei „höchste“ und „niedrigste“ auf String-Vergleich .

Das hat nichts damit zu tun, wie viele Elemente gibt es (was eindeutig 15 ist); es wird nur das Verhalten des Indexwerts beeinflusst.

Wenn Sie mehr Elemente haben, sehen Sie das last Wertänderung, wenn Sie 89 passieren, da '90' ein höherer Wert als '9' ist und '91' höher als '90' ist; aber wenn Sie 99 überschreiten, bleibt es dort, bis Sie 900 erreichen. Und so weiter.

db<>fiddle