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

където клауза за избор на термин кодове

Доколкото знам, в Oracle SQL няма булев тип, така че не можете да имате CASE израз, който се оценява на булева стойност. За щастие във вашия конкретен случай не ви трябва:

and TERM_CODE = :parm_DD_TermCode.TERM_CODE
and GPA_TERM_CODE = CASE
  WHEN TERM_CODE LIKE '%80'
       THEN SUBSTR(:parm_DD_TermCode.TERM_CODE, 1, 4) || '50'
  WHEN TERM_CODE LIKE '%50'
       THEN SUBSTR(:parm_DD_TermCode.TERM_CODE, 1, 4) || '10'
  WHEN TERM_CODE LIKE '%10'
       THEN to_char(to_number(SUBSTR(:parm_DD_TermCode.TERM_CODE, 1, 4)) - 1) || '80'
  END

Както можете да видите, добавих и някои изрични преобразувания на типове:доверието на неявните преобразувания на SQL е ОСОБЕНО ЛОША ИДЕЯ . Кодът по-горе предполага, че TERM_CODE и GPA_TERM_CODE са низове.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PhpStorm не може да разреши колона за множество връзки към база данни

  2. nhibernate, функция за извикване в Oracle, която връща sys refcursor

  3. Първи стъпки с Oracle Application Express-APEX

  4. Oracle [Процедура] - Функцията Sum игнорира клаузата WHERE

  5. Премахване на крайната десетична нула