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

gdzie klauzula wybierająca kody terminów

O ile wiem, w Oracle SQL nie ma typu logicznego, więc nie możesz mieć CASE wyrażenie, którego wynikiem jest wartość logiczna. Na szczęście w Twoim konkretnym przypadku nie jest to potrzebne:

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

Jak widać, dodałem również kilka jawnych konwersji typów:ufanie niejawnym konwersjom SQL jest SZCZEGÓLNIE ZŁYM POMYSŁEM . Powyższy kod zakłada, że ​​TERM_CODE i GPA_TERM_CODE są ciągami.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01401:wstawiona wartość jest za duża dla kolumny CHAR

  2. Nie można usunąć tabeli, która właśnie została utworzona

  3. Jak zainstalować Oracle Linux Automation Manager (znany również jako „Oracle Ansible Tower”)

  4. Połącz się z bazą danych Oracle w aplikacji dotnet mvc

  5. BIN_TO_NUM() Funkcja w Oracle