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

Literał nie pasuje do ciągu formatu dla Oracle SQL to_date w kolumnie ciągu

Kolejność, w której Oracle ocenia warunki zawarte w klauzuli WHERE, nie jest ustalona. Oznacza to, że może wybrać ocenę warunku zawierającego TO_DATE przed innymi kryteriami, w którym to przypadku zapytanie zakończy się niepowodzeniem. Aby temu zapobiec, dodaj do zapytania wskazówkę order_predicates, ale pamiętaj, że może to wymagać dodatkowego ręcznego dostrojenia w celu poprawy wydajności.

SELECT /*+ ordered_predicates */
               To_Date(c.Value, 'MM/DD/YYYY HH24:MI:SS') somedate 
          FROM properties$aud a, 
               template_properties$aud b, 
               consumable_properties$aud c 
         WHERE Lower(a.name) = 'somedate' 
           AND a.id = b.property_id 
           AND b.id = c.template_property_id 
           AND To_Date(c.Value, 'MM/DD/YYYY HH24:MI:SS') IS NOT NULL

Podobno ordered_predicates jest przestarzały począwszy od 10g. W takim przypadku myślę, że jedyną opcją jest użycie podzapytania w taki sposób, aby optymalizator był zmuszony najpierw je ocenić (tzn. nie mógł połączyć zapytań). Najprostszym sposobem na to jest umieszczenie rownum w instrukcji where wewnętrznego zapytania.

SELECT To_Date(c.Value, 'MM/DD/YYYY HH24:MI:SS') somedate 
  FROM (SELECT value 
          FROM properties$aud a, 
               template_properties$aud b, 
               consumable_properties$aud c 
         WHERE Lower(a.name) = 'somedate' 
           AND a.id = b.property_id 
           AND b.id = c.template_property_id
           AND rownum > 0) 
 WHERE To_Date(c.Value, 'MM/DD/YYYY HH24:MI:SS') IS NOT NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak za pomocą sql/plsql dowiedzieć się, jakiego zestawu znaków używa tekst?

  2. Wyszukaj wartość we wszystkich tabelach bazy danych

  3. Problem z wydajnością podczas aktualizacji tabeli z innej tabeli

  4. Błąd ORA-00909:nieprawidłowa liczba argumentów

  5. Jak przekonwertować wiersze na kolumny w Oracle?