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

Access/jet еквивалент на декодирането на Oracle

Най-близката аналогия е SWITCH() функция напр.

Oracle:

SELECT supplier_name,
       decode(supplier_id,  10000, 'IBM',
                            10001, 'Microsoft',
                            10002, 'Hewlett Packard',
                                   'Gateway') result
  FROM suppliers;

Access Database Engine

SELECT supplier_name,
       SWITCH(supplier_id = 10000, 'IBM',
              supplier_id = 10001, 'Microsoft',
              supplier_id = 10002, 'Hewlett Packard',
              TRUE, 'Gateway') AS result
  FROM suppliers; 

Имайте предвид, че с SWITCH() трябва да предоставяте пълния предикат всеки път, така че не сте ограничени да използвате само доставчик_id. За стойността по подразбиране използвайте предикат, който е очевиден за човешкия читател, че е ВЯРНА, напр. 1 = 1 или наистина просто TRUE :)

Нещо, което може да не е очевидно е, че логиката в SWITCH() функцията не създава късо съединение, което означава, че всеки израз във функцията трябва да може да бъде оценен без грешка. Ако имате нужда от логика за късо съединение, тогава ще трябва да използвате вложен IIF() функции.



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

  2. Oracle 10:Използване на HEXTORAW за попълване на blob данни

  3. Как да добавя последната секунда към датата?

  4. Добавяне на типове файлове, които да бъдат разпознати от Files.probeContentType(new File(.ttf).toPath());

  5. Oracle XMLTYPE извлича коренна пролог стойност