Oracle
 sql >> база данни >  >> RDS >> Oracle

Използване на сложен оператор IF в Oracle SQL

Прочетете документацията на виртуални колони:

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'))
)

Между другото, СИЛНО препоръчвам:

  • с помощта на bit поле вместо Yes /No ограничение за Sheds и Water_Supply (спестява място и ограничения при проверка и се превежда директно в булеви стойности на повечето езици на приложението)
  • използване на справочна таблица за Owner_Category вместо ограничение за низ по принцип същите причини



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работите върху пакетите на Oracle в среда за сътрудничество, контролирана от версии?

  2. Как да свържете Oracle Database към проект на Visual Studio C#

  3. Грешка:[email protected] install:`node-gyp rebuild` докато инсталирате модула oracledb

  4. Как да използвате точки за запазване в процедура на oracle

  5. Липсваща дясна скоба:При изтриване Задаване на нула При каскада за актуализиране (SQL/Oracle)