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

Oracle ugyldigt nummer i klausul

En ændring af fonetisk_mands svar, der vil tillade NULL-elementer i listen. Regex-formatet '[^,]+' til parsing af afgrænsede lister håndterer ikke NULL-listeelementer og returnerer en forkert værdi, hvis der findes en, og derfor bør brugen af ​​den undgås. Skift originalen ved at slette tallet 2 for eksempel og se resultaterne. Du får en '3' i 2. elements position! Her er en måde, der håndterer NULL og returnerer den korrekte værdi for elementet:

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;

Se her for mere info og bevis:https://stackoverflow.com/a/31464699/2543416



  1. Hvad gør pg_escape_string præcist?

  2. sql self-join tabel fjern duplikerede linjer

  3. Opdeling af Datetime i en dato og en tidsværdi

  4. Den hellige gral med at rense input og output i php?