sql >> Database >  >> RDS >> Oracle

waar clausule termcodes selecteren

Voor zover ik weet is er geen boolean type in Oracle SQL, dus je kunt geen CASE hebben expressie die evalueert naar een booleaanse waarde. Gelukkig heb je het in jouw specifieke geval niet nodig:

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

Zoals je kunt zien, heb ik ook enkele expliciete typeconversies toegevoegd:vertrouwen op SQL impliciete conversies is een SPECIEEL SLECHT IDEE . De bovenstaande code gaat ervan uit dat TERM_CODE en GPA_TERM_CODE zijn strings.




  1. MySQL invoegen in meerdere tabellen? (Database normalisatie?)

  2. Versnel het invoegen van grote datasets van txt-bestand naar mySQL met behulp van python

  3. MySQL-groep op aangepast tijdstempel

  4. Moet elke gebruikerstabel een geclusterde index hebben?