Oracle
 sql >> база данни >  >> RDS >> Oracle

Литералът не съвпада с форматиран низ за Oracle SQL to_date в низова колона

Редът, по който Oracle оценява условията, намерени в клаузата where, не е фиксиран. Това означава, че може да избере да оцени условието, съдържащо TO_DATE, преди другите критерии, в който случай заявката ще бъде неуспешна. За да предотвратите това, добавете подсказката за ordered_predicates към вашата заявка, но имайте предвид, че това може да изисква допълнителна ръчна настройка за подобряване на производителността.

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

Очевидно ordered_predicates се отхвърля, започвайки с 10g. В такъв случай мисля, че единствената ви възможност е да използвате подзаявка по такъв начин, че оптимизаторът да е принуден първо да я оцени (т.е. да не може да комбинира заявките). Най-лесният начин да направите това е да поставите rownum в командата where на вътрешната заявка.

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. Изберете от няколко дяла наведнъж

  2. Защо изпълнението на тази заявка с EXECUTE IMMEDIATE води до неуспех?

  3. IS срещу AS ключови думи за PL/SQL Oracle функция или създаване на процедура

  4. Как да експортирате резултатите от заявката на Oracle в JSON файл, когато използвате SQLcl

  5. Проблем с преобразуване на Oracle SQL DATE при използване на iBATIS чрез Java JDBC