Въведение в Oracle sql декодирането
В този раздел ще обсъдим обработката на декодиране на Oracle, която е много важен аспект на оператора Oracle sql
Oracle декодирането е методът в базата данни на Oracle за трансформиране на стойности на данни от една стойност в друга, която е по-добре за разбиране. Oracle Decode преобразува стойностите на данните по време на извличане.
Това е вид Ако тогава друго за обработка
Кодовият блок за Oracle sql Decode е по-долу
декодиране(име на израз или колона, съвпадение, резултат [,съвпадение, резултат]…[,по подразбиране] )
Ето значението на термините в горния код
a) израз или колона е стойността за сравнение
b) съвпадението е стойността, която се сравнява с израза
c) резултатът е върнатата стойност, ако изразът е равен на съвпадение
d) по подразбиране е по избор. Ако не бъдат намерени съвпадения, декодирането ще върне по подразбиране. Ако по подразбиране е пропуснато, операторът за декодиране ще върне NULL (няма намерени съвпадения).
Пример
изберете |
Ето алгоритъмът за по-добро разбиране
1) Oracle извлича стойността на колоната на фазовия код
2) ако кодът на фазата ='P' , тогава изчакващ
3) ако кодът на фазата ='C' , тогава Завършен
4) ако кодът на фазата ='T' след това прекратено
5) ако Phase code ='S' , тогава Standby
6) Ако кодът на фазата не е нито едно от горните, декодирането връща Unknown
7) Ако не е налице по подразбиране ще даде нула
Имайте предвид, че декодирането на Oracle започва с посочване на името на колоната или израза, последвано от набор от съвпадащи двойки стойности на трансформация. В края на оператора за декодиране намираме стойност по подразбиране. Стойността по подразбиране казва на декодирането какво да се показва, ако стойностите на колона не са в сдвоения списък.
Бихме могли да кажем алгоритъма по този начин
if (expr ==търсене1) return(result1); elseif (expr ==search2) return( резултат2); …elseif (expr ==търсенеn) връщане(резултат); друго връщане (по подразбиране); |
Още няколко точки, които трябва да запомните за Oracle Decode
1) Във функция DECODE Oracle счита две нули за еквивалентни. Ако expr е нула, тогава Oracle връща резултата от първото търсене, който също е нулев.
SQL> SELECT decode(null,null,1,0) FROM dual;
DECODE(NULL,NULL,1,0)
————————
1
2) Максималният брой компоненти във функцията DECODE, включително expr, търсения, резултати и подразбиране, е 255.
3) Oracle автоматично преобразува стойностите за израз и сравнителна_стойност към типа данни на първата сравнителна_стойност. Също така типът данни на return_value се преобразува в типа данни на първата return_value. Ако първият резултат има тип данни CHAR или ако първият резултат е нулев, тогава Oracle преобразува върнатата стойност в типа данни VARCHAR2
Как да чета декодиране в Oracle
можем да прочетем израза за декодиране като израз if-else. Първият аргумент в израза за декодиране обикновено ще бъде някаква колона, където е необходима трансформация на данни. Аргументът след това ще сравнява стойностите на първия аргумент с него
Често задавани въпроси относно обработката на Oracle sql Decode
(1) Видяхме, че „expr“ се приравнява на определени стойности. Можем ли да използваме оператори за неравенство като> или
Да вземем пример
ИЗБЕРЕТЕ ДЕКОД(заплата,<50000, sal + 1000, sal + 500) Final_salary FROM emp;
ГРЕШКА на ред 2
ORA-00936:липсващ израз
Така че не можем да използваме това. Трябва да използваме изявление за case, за да го направим. или можем да подпишем функция в декодиране за да го постигнем
ИЗБЕРЕТЕ ДЕКОДИРОВАНИЕ(знак(заплата- 50000), -1,sal + 1000, sal + 500) Final_salary FROM emp;
По принцип трябва да преобразуваме нашите изискване към някаква формула, която може да се оцени до някаква стойност
ИЗБЕРЕТЕ col1,col2 decode( abs(col1-col2), 0, ‘col1 =col2’,Col1-col2, ‘col1> col2′,’col1
CASE може да работи като PL/SQL конструкция, но DECODE се използва само в SQL изрази. CASE може да се използва като параметър на функция/процедура.
CASE очаква последователност на типа данни, DECODE не
CASE очаква тип данни последователност, DECODE не.
DECODE може да работи само със скаларни стойности, но CASE може да работи с логически оператори, предикати и подзаявки с възможност за търсене.
Да Максималният брой компоненти във функцията DECODE, включително expr, търсения, резултати и подразбиране, е 255.
Сродни връзки
Документация на Oracle за декодиране
как да пишем sql заявки
Основно изявление на Sql
Изявление за случая на Oracle, обяснено със съвети и примери
урок за SQL