Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

mệnh đề chọn mã kỳ hạn ở đâu

Theo như tôi biết không có kiểu boolean trong Oracle SQL, vì vậy bạn không thể có CASE biểu thức đánh giá thành một giá trị boolean. May mắn thay, trong trường hợp cụ thể của bạn, bạn không cần nó:

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

Như bạn có thể thấy, tôi cũng đã thêm một số chuyển đổi kiểu rõ ràng:tin tưởng chuyển đổi ngầm trong SQL là Ý TƯỞNG ĐẶC BIỆT XẤU . Đoạn mã trên giả định rằng TERM_CODEGPA_TERM_CODE là các chuỗi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kích hoạt nếu khác

  2. Oracle:Từ khóa YEAR không hợp lệ

  3. Truy xuất thông tin kiểu dữ liệu cho các cột trong Oracle OCCI ResultSet

  4. Không tìm thấy trình điều khiển phù hợp cho jdbc:oracle:thin:@ **** oracle / jdbc / driver / OracleDriver;

  5. Oracle - tên cột động trong câu lệnh select