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

Oracle:unikanie wartości NULL w to_date

Jeśli start_date ma wartość NULL, nie jest zgłaszany żaden wyjątek.

select to_date( null, 'mm/dd/yyyy' ) 
  from dual

jest doskonale poprawną instrukcją SQL, która zwraca NULL.

Otrzymywany błąd wyraźnie wskazuje, że przynajmniej niektóre wiersze w start_date kolumny nie są w rzeczywistości ciągami w oczekiwanym formacie lub które są mapowane na nieprawidłowe daty (np. ciąg „13/35/2007”). Możesz napisać funkcję, która testuje, aby sprawdzić, czy ciąg może zostać przekonwertowany na datę, i zwraca albo przekonwertowaną datę, albo wartość NULL. Możesz wtedy użyć tego zamiast to_date .

CREATE OR REPLACE FUNCTION my_to_date( p_str    IN VARCHAR2,
                                       p_format IN VARCHAR2 )
  RETURN DATE
IS
BEGIN
  RETURN to_date( p_str, p_format );
EXCEPTION
  WHEN OTHERS
  THEN
    RETURN NULL;
END;

a następnie użyj my_to_date zamiast to_date . To powinno wyeliminować błąd, który otrzymujesz. Jednak prawdopodobnie będziesz chciał wyczyścić dane, aby pozbyć się nieprawidłowych ciągów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można odwołać się do dziesiątego i kolejnych ciągów zastępczych w regexp_replace Oracle?

  2. 6 sposobów na usunięcie zduplikowanych wierszy, które mają klucz podstawowy w Oracle

  3. Najlepsze praktyki dotyczące przechowywania haseł w skryptach powłoki / Perla?

  4. jak wybrać najczęściej pojawiające się wartości?

  5. oracle konwertuj czas epoki unix na datę