sql >> Database >  >> RDS >> Oracle

Oracle ongeldig nummer in clausule

Een wijziging in het antwoord van phonetic_man waardoor NULL-elementen in de lijst mogelijk zijn. De regex-indeling van '[^,]+' voor het ontleden van gescheiden lijsten verwerkt geen NULL-lijstelementen en retourneert een onjuiste waarde als die bestaat en daarom moet het gebruik ervan worden vermeden. Verander het origineel door bijvoorbeeld nummer 2 te verwijderen en bekijk de resultaten. Je krijgt een '3' op de positie van het 2e element! Hier is een manier die de NULL verwerkt en de juiste waarde voor het element retourneert:

SELECT TRIM(REGEXP_SUBSTR(str, '(.*?)(,|$)', 1, LEVEL, NULL, 1)) str
    FROM ( SELECT '1,,3,4' str FROM dual )
    connect by level <= regexp_count(str, ',') + 1;

Zie hier voor meer info en bewijs:https://stackoverflow.com/a/31464699/2543416



  1. C# SQLServer haalt resultaten op en plaatst ze in een .csv-formaat

  2. Is er een manier om een ​​vervaltijd in te stellen, waarna een gegevensinvoer automatisch wordt verwijderd in PostgreSQL?

  3. Toegang tot mySQL van Java Database geweigerd

  4. Vergrendelt MySql automatisch rijen of moet ik een vergrendeling toevoegen in de deelmodus?