sql >> Databáze >  >> RDS >> Oracle

klauzule where pro výběr termínových kódů

Pokud vím, v Oracle SQL neexistuje žádný booleovský typ, takže nemůžete mít CASE výraz, který se vyhodnotí jako booleovská hodnota. Naštěstí to ve vašem konkrétním případě nepotřebujete:

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 můžete vidět, přidal jsem také několik explicitních konverzí typu:důvěřovat implicitním konverzím SQL je ZVLÁŠTNĚ ŠPATNÝ NÁPAD . Výše uvedený kód předpokládá, že TERM_CODE a GPA_TERM_CODE jsou řetězce.




  1. Záznam klonu SQL s jedinečným indexem

  2. Přepsat sériovou sekvenci v PostgreSql pomocí Entity Framework (C#)

  3. Navigační stromová nabídka Mysql/php

  4. Vyberte do dočasné tabulky v Oracle