sql >> データベース >  >> RDS >> Oracle

where句は用語コードを選択します

    私の知る限り、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. 406行目のMySQLエラー2006(HY000):MySQLサーバーがなくなりました

    2. リッチテキストボックスのデータをフォーマットしてデータベースに保存する

    3. SQL Server 2008:TOP 10 と区別

    4. nightwatchカスタムコマンドコールバック