Oracle
 sql >> Database >  >> RDS >> Oracle

perché un array associativo indicizzato da VARCHAR2 non memorizza più di 9 elementi

Lo vedi perché l'indice è una stringa; il 15° elemento che aggiungi ha l'indice '15', non il numero 15; e con il confronto di stringhe '9' è maggiore di '15'. Quindi, last mostra la stringa più alta valore, che è ancora '9'. Come dice @Koen, questo è il comportamento documentato :

dove "più alto" e "più basso" si basano su confronto di stringhe .

Questo non ha nulla a che fare con quanti molti elementi ci sono (che è chiaramente 15); è solo il comportamento del valore dell'indice ad essere interessato.

Se hai più elementi, vedrai l'last il valore cambia quando si passa 89, poiché '90' è un valore maggiore di '9' e '91' è maggiore di '90'; ma quando superi 99 resta lì fino a quando arrivi a 900. E così via.

db<>violino