sql >> Databasteknik >  >> RDS >> Oracle

Oracle ogiltigt nummer i klausul

En ändring av phonetic_mans svar som tillåter NULL-element i listan. Regex-formatet för '[^,]+' för att tolka avgränsade listor hanterar inte NULL-listelement och kommer att returnera ett felaktigt värde om ett sådant finns och därför bör användningen undvikas. Ändra originalet genom att ta bort siffran 2 till exempel och se resultatet. Du kommer att få en "3" i det andra elementets position! Här är ett sätt som hanterar NULL och returnerar det korrekta värdet för 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 här för mer info och bevis:https://stackoverflow.com/a/31464699/2543416



  1. TNS:listener känner för närvarande inte till tjänst som efterfrågas i anslutningsbeskrivningen

  2. Dynamisk rullgardinslista för olika länder, stater, geografiska platser?

  3. jetty-env.xml med DataSource leder till felaktig WebAppContext på mvn jetty:run

  4. Ange dblink-kolumndefinitionslista från en lokal befintlig typ