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

Sử dụng câu lệnh IF phức tạp trong Oracle SQL

Đọc tài liệu trên các cột ảo:

CREATE TABLE Rent_Band
(
    Plot_ID NUMBER(3),
    Band VARCHAR(1) AS
       (CASE WHEN Owner_Category = 'Council' AND Sheds ='No' THEN 'A'
            WHEN Owner_Category = 'Private' AND Water_Supply ='Yes' THEN 'D'
            WHEN Owner_Category = 'Council' AND Water_Supply ='No' AND Sheds ='Yes' THEN 'B'
            WHEN Owner_Category = 'Private' AND Water_Supply ='No' AND Sheds ='No' THEN 'B'
       ELSE 'C' END),
    Rent_Charge NUMBER(4), 
    Owner_Category VARCHAR(10) CONSTRAINT Checking_Owner_Category CHECK((Owner_Category='Private') OR (Owner_Category='Council')), 
    Sheds VARCHAR(3) CHECK((Sheds='Yes') OR (Sheds='No')), 
    Water_Supply VARCHAR(3) CHECK((Water_Supply='Yes') OR (Water_Supply='No'))
)

BTW, tôi sẽ giới thiệu MẠNH MẼ:

  • sử dụng bit trường thay vì Yes / No ràng buộc cho ShedsWater_Supply (tiết kiệm chỗ và các ràng buộc kiểm tra chi phí, đồng thời dịch trực tiếp sang boolean trong hầu hết các ngôn ngữ ứng dụng)
  • sử dụng bảng tra cứu cho Owner_Category thay vì một ràng buộc chuỗi vì những lý do cơ bản giống nhau



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:xóa tất cả dữ liệu khỏi tất cả các bảng có sẵn

  2. (PLSQL) Biểu thức đơn giản nhất để kiểm tra giá trị đã thay đổi trong trình kích hoạt cập nhật trên Oracle là gì?

  3. Sử dụng thủ tục được lưu trữ Oracle PL / SQL để cấp quyền trên bảng của người dùng khác

  4. Tránh chèn giá trị theo cấp số nhân trong cột DB Float

  5. SQL - Đếm số lượng thay đổi trong danh sách có thứ tự