Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Nieprawidłowy numer Oracle w klauzuli

Zmiana odpowiedzi fonetycznego_mana, która pozwoli na umieszczenie na liście elementów NULL. Format wyrażenia regularnego '[^,]+' do parsowania list rozdzielanych nie obsługuje elementów list NULL i zwróci niepoprawną wartość, jeśli taka istnieje, dlatego należy unikać jej używania. Zmień oryginał, usuwając na przykład cyfrę 2 i zobacz wyniki. Otrzymasz „3” na pozycji 2 elementu! Oto sposób, który obsługuje NULL i zwraca poprawną wartość elementu:

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;

Więcej informacji i dowodów znajdziesz tutaj:https://stackoverflow.com/a/31464699/2543416



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. regexp_substr pomija puste pozycje

  2. Sprawdź, czy wiersz istnieje

  3. Oracle uważa puste ciągi za NULL, podczas gdy SQL Server nie — jak najlepiej się z tym obchodzić?

  4. Oracle:Ustaw limit czasu zapytania

  5. Jak korzystać z wirtualnego indeksu w bazie danych Oracle