sql >> Database >  >> RDS >> Oracle

waarom een ​​associatieve array geïndexeerd door VARCHAR2 niet meer dan 9 elementen opslaat?

Je ziet dat omdat de index is een string; het 15e element dat u toevoegt heeft index '15', niet het nummer 15; en bij stringvergelijking is '9' hoger dan '15'. Dus, last toont de hoogste tekenreeks waarde, die nog steeds '9' is. Zoals @Koen zegt, is dit het gedocumenteerde gedrag :

waarbij 'highest' en 'lowest' zijn gebaseerd op tekenreeksvergelijking .

Dat heeft niets te maken met hoeveel veel elementen die er zijn (wat duidelijk 15 is); alleen het gedrag van de indexwaarde wordt beïnvloed.

Als je meer elementen hebt, zie je de last waardeverandering wanneer u 89 passeert, aangezien '90' een hogere waarde is dan '9' en '91' hoger is dan '90'; maar als je de 99 passeert, blijft het daar totdat je 900 bereikt. En zo verder.

db<>fiddle



  1. Hoe schrijf je deze SQL-instructie?

  2. SQLITE kan de alleen-lezen database niet upgraden van versie 1 naar 2

  3. wat is de beste methode om onbeperkte subcategorieën te maken?

  4. Normaliseer transactiegegevens van tijd- en statuskolommen naar minuten per statuswaarde