sql >> Databáze >  >> RDS >> Oracle

proč asociativní pole indexované pomocí VARCHAR2 neukládá více než 9 prvků

Vidíte to protože index je řetězec; 15. prvek, který přidáte, má index '15', nikoli číslo 15; a při porovnání řetězců je '9' vyšší než '15'. Takže last zobrazuje nejvyšší řetězec hodnota, která je stále '9'. Jak říká @Koen, toto je dokumentované chování :

kde 'nejvyšší' a 'nejnižší' jsou založeny na porovnání řetězců .

To nemá nic společného s počtem počet prvky tam jsou (což je jasně 15); ovlivněno je pouze chování hodnoty indexu.

Pokud máte více prvků, uvidíte last hodnota se změní, když překročíte 89, protože '90' je vyšší hodnota než '9' a '91' je vyšší než '90'; ale když minete 99, zůstane tam, dokud nedosáhnete 900. A tak dále.

db<>fiddle



  1. PHP mysqli() nefunguje

  2. Vypršel časový limit připojení obálky cizích dat Cloud SQL (postgres) k instanci repliky

  3. Jak získat více počtů jedním SQL dotazem?

  4. Jak používat mnoho operátorů LIKE a používat index