DZWONEK

Są tacy, którzy czytają te wiadomości przed tobą.
Subskrybuj, aby otrzymywać świeże artykuły.
Email
Imię
Nazwisko
Jak chcesz przeczytać Dzwon
Bez spamu

Funkcja TO_CHAR z liczbami

Funkcje konwersji danych na inne typy danych. TO_CHAR (liczba) konwertuje liczbę na tekst. TO_NUMBER (ciąg) konwertuje tekst na liczbę.

SELECT TO_CHAR (123) FROM DUAL zwróci ciąg 123, SELECT TO_NUMBER (`12345”) FROM DUAL zwróci liczbę 12345.

Praca w laboratorium. Zmień format wyświetlanych liczb

Zmiany formatu wartości liczbowych w Oracle SQL, funkcja TO_CHAR do pracy z wartościami liczbowymi.

Zadanie:

Napisz zapytanie, które wyświetla informacje o nazwisku, nazwisku i wynagrodzeniu pracowników z tabeli godz. Pracowników w formacie pokazanym na ryc. 3.4-1:

Ryc. 3.4 -1

Jednocześnie dane powinny zostać posortowane, aby wyświetlały się pierwsze wiersze dla pracowników o najwyższym wynagrodzeniu.

Uwaga:

Niektóre wartości wynagrodzenia na ryc. 3.4-1 zostały zmienione, więc mogą nie pasować do twoich wartości.

Rozwiązanie:

WYBIERZ imię jako AS „Imię”, nazwisko Jako „Nazwisko”, TO_CHAR (SALARY, „L999999999.99”) Jako „Wynagrodzenie” OD godz. Pracowników ZAMÓWIENIE WEDŁUG PŁATNOŚCI DESC.

Funkcje TO_NUMBER i TO_DATE

Funkcja konwersji ciągu na datę TO_DATE (ciąg, format). Możliwe wartości formatu zostały już omówione powyżej, dlatego podam kilka przykładów użycia tej funkcji. Przykłady:

WYBIERZ   TO_DATE („01.01.2010”, „DD.MM.RRRR”) OD   DUAL zwróci datę „01/01/2010”;

WYBIERZ   TO_DATE („01. STYCZEŃ 2010”, „DD.MON.RRRR”)   OD   DUAL zwróci datę „01.01.2009”;

WYBIERZ   TO_DATE („15-01-10”, „DD-MM-RR”) OD   DUAL zwróci datę „01/15/2010”.

Funkcja konwersji ciągu na wartość liczbową TO_NUMBER (ciąg, format). Najczęstsze wartości formatu są wymienione w tabeli, więc spójrzmy na zastosowanie tej funkcji z przykładami. Przykłady:

WYBIERZ   TO_NUMBER (`100 ') OD   Funkcja DUAL zwróci liczbę 100 SELECT TO_NUMBER („0010.01”, „9999D99”)   OD   DUAL zwróci liczbę 10.01;

WYBIERZ   TO_NUMBER („500 000”, „999G999”) OD   DUAL zwróci liczbę 500000.

Element RR w formacie daty

Element formatu daty i godziny RR jest podobny do elementu formatu daty i godziny RR, ale zapewnia to dodatkową elastyczność w zakresie przechowywania wartości dat w innych wiekach. Element formatu RR daty i godziny pozwala przechowywać daty XX wieku w XXI wieku, wskazując tylko dwie ostatnie cyfry roku.

Jeśli dwie ostatnie cyfry bieżącego roku mają wartość od 00 do 49, wówczas zwracany rok ma te same dwie pierwsze cyfry, co w bieżącym roku.

Jeśli dwie ostatnie cyfry bieżącego roku mają wartość od 50 do 99, wówczas pierwsze 2 cyfry zwróconego roku są o 1 więcej niż w przypadku pierwszych 2 cyfr bieżącego roku.

Jeśli dwie ostatnie cyfry bieżącego roku mają wartość od 00 do 49, wówczas pierwsze 2 cyfry zwróconego roku są o 1 mniejsze niż pierwsze 2 cyfry bieżącego roku.

Jeśli dwie ostatnie cyfry bieżącego roku mają wartość od 50 do 99, wówczas zwracany rok ma te same dwie pierwsze cyfry, co w bieżącym roku.

Funkcja NVL

Najczęściej używana jest funkcja NVL. Funkcja otrzymuje dwa parametry: NVL (expr1, exp2). Jeśli pierwszy parametr wyraż1 nie jest równy NULL, funkcja zwraca jego wartość. Jeśli pierwszym parametrem jest NULL, wówczas funkcja zwraca wartość drugiego parametru exp2.

Przykład: Wybierz NVL (dostawca_city, nie dotyczy ”) od dostawców:

Powyższa instrukcja SQL zwróci n / d, jeśli pole dostawca_city zawiera wartość , w przeciwnym razie zwróci wartość miasto_wynawca.

Innym przykładem użycia funkcji NVL w Oracle / PLSQL jest:

wybierz dostawca_id, NVL (dostawca_desc, nazwa_ dostawcy) od dostawców.

Ta instrukcja SQL zwróci nazwa_ dostawcy   pole jeśli dostawca_desc   zawiera wartość zerową. W przeciwnym razie wróci dostawca_desc.

Ostatni przykład: użycie funkcji NVL w Oracle / PLSQL to: wybierz NVL (prowizja, 0) ze sprzedaży;

Ta instrukcja SQL zwróciła wartość 0, jeśli prowizja   pole zawiera wartość null. W przeciwnym razie wróci prowizje   pole.

Konwersje NVL dla różnych typów danych

Aby przekonwertować niezdefiniowaną wartość na rzeczywistą, używana jest funkcja NVL: NVL ( wyrażenie 1, wyrażenie 2), gdzie:

wyrażenie1-   Oryginalna lub obliczona wartość, która może być nieokreślona.

wyrażenie2   - Wartość zastępowana wartością niezdefiniowaną.

Uwaga:   Funkcji NVL można użyć do konwersji dowolnego rodzaju danych, ale wynik będzie zawsze tego samego typu wyrażenie 1.

Konwersja NVL dla różnych typów:

NUMER - NVL (kolumna numeryczna, 9).

CHAR lub VARCHAR2 - NVL (kolumna znaków |   „Niedostępne”).

Praca w laboratorium. Stosowanie funkcji NVL

Funkcja NVL do pracy z wartościami null w Oracle SQL.

Zadanie:

Napisz zapytanie, które wyświetla informacje o nazwisku i nazwisku pracowników od pracowników hr. Tabela, a także stawkę prowizji (kolumna COMMISSION_PCT) dla pracownika. Jednocześnie w przypadku pracowników, dla których prowizja nie jest zdefiniowana, należy wyświetlić wartość 0. Wynik zapytania powinien być taki, jak pokazano na ryc. 3,5–1.

Ryc. 3.5 -1 (pokazuje wartości zaczynające się od linii 51)

Rozwiązanie:

Kod odpowiedniego żądania może wyglądać następująco:

WYBIERZ imię jako AS „Imię”, nazwisko Jako „Nazwisko”, NVL (COMMISSION_PCT, 0) Jako „Stawka prowizji” od godz. Pracowników.

  Funkcja NVL

Najczęściej używana jest funkcja NVL. Funkcja otrzymuje dwa parametry: NVL (expr1, expr2). Jeśli pierwszy parametr wyraż1 nie jest równy NULL, funkcja zwraca jego wartość. Jeśli pierwszym parametrem jest NULL, wówczas funkcja zwraca wartość drugiego parametru expr2.

Rozważ praktyczny przykład. Pole COMM w tabeli EMP może zawierać wartości NULL. Podczas wykonywania zapytania formularza:

WYBIERZ EMPNO, ENAME, COMM, NVL (COMM, 0) NVL_COMM

OD SCOTT.EMP

wartość NULL zostanie zastąpiona przez zero. Należy pamiętać, że jeśli wartość jest tworzona za pomocą funkcji, przypisywany jest jej alias. Wyniki zapytania będą wyglądać następująco:

EMPNO ENAME COMM NVL_COMM
7369 Smith 0
7499 ALLEN 300 300
7521 Totem 500 500
7566 Jones 0
7654 MARTIN 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KRÓL 0
7844 TURNER 0 0
7900 JAMES 0
7902 FORD 0
7934 MILLER 0

Funkcja CEIL (n)

Funkcja CEIL zwraca najmniejszą liczbę całkowitą większą lub równą liczbie n przekazanej jako parametr. Na przykład:

WYBIERZ CEIL (100) X1, CEIL (-100) X2, CEIL (100.2) X3, CEIL (-100.2) X4

OD DUALA

Funkcja TRUNC (n [, m])

Funkcja TRUNC zwraca liczbę n obciętą do m cyfr po przecinku. Parametr m może nie zostać określony - w tym przypadku n jest obcinany do liczby całkowitej.

WYBIERZ TRUNC (100.25678) X1, TRUNC (-100.25678) X2, TRUNC (100.99) X3,

  TRUNC (100.25678, 2) X4

OD DUALA

Funkcja SIGN (n)

Funkcja SIGN określa znak liczby. Jeśli n jest dodatnie, funkcja zwraca 1. Jeśli jest ujemne, zwracane jest -1. Jeśli jest równa zero, zwracane jest 0. Na przykład:

WYBIERZ ZNAK (100,22) X1, ZNAK (-100.22) X2, ZNAK (0) X3

OD DUALA

Ciekawą cechą tej funkcji jest możliwość przeniesienia m równego zeru - nie występuje błąd podziału o 0.

Funkcja POWER (n, m)

Funkcja POWER podnosi liczbę n do potęgi m. Stopień może być ułamkowy i ujemny, co znacznie rozszerza możliwości tej funkcji.

WYBIERZ MOC (10, 2) X1, MOC (100, 1/2) X2,

  MOC (1000, 1/3) X3, MOC (1000, -1/3) X4

OD DUALA

X1 X2 X3 X4
100 10 10 0,1

W niektórych przypadkach może wystąpić wyjątek podczas wywoływania tej funkcji. Na przykład:

WYBIERZ MOC (-100, 1/2) X2

OD DUALA

W takim przypadku podejmowana jest próba obliczenia pierwiastka kwadratowego liczby ujemnej, co doprowadzi do wystąpienia błędu ORA-01428 „Argument spoza zakresu”.

Funkcja SQRT (n)

Ta funkcja zwraca pierwiastek kwadratowy z n. Na przykład:

WYBIERZ SQRT (100) X

OD DUALA

Funkcje EXP (n) i LN (n)

Funkcja EXP podnosi e do potęgi n, a funkcja LN oblicza logarytm naturalny n (podczas gdy n musi być większe od zera). Przykład:

WYBIERZ EXP (2) X1, LN (1) X2, LN (EXP (2)) X3

  Funkcja NVL

Najczęściej używana jest funkcja NVL. Funkcja otrzymuje dwa parametry: NVL (expr1, expr2). Jeśli pierwszy parametr wyraż1 nie jest równy NULL, funkcja zwraca jego wartość. Jeśli pierwszym parametrem jest NULL, wówczas funkcja zwraca wartość drugiego parametru expr2.

Rozważ praktyczny przykład. Pole COMM w tabeli EMP może zawierać wartości NULL. Podczas wykonywania zapytania formularza:

WYBIERZ EMPNO, ENAME, COMM, NVL (COMM, 0) NVL_COMM

OD SCOTT.EMP

wartość NULL zostanie zastąpiona przez zero. Należy pamiętać, że jeśli wartość jest tworzona za pomocą funkcji, przypisywany jest jej alias. Wyniki zapytania będą wyglądać następująco:

EMPNO ENAME COMM NVL_COMM
7369 Smith 0
7499 ALLEN 300 300
7521 Totem 500 500
7566 Jones 0
7654 MARTIN 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KRÓL 0
7844 TURNER 0 0
7900 JAMES 0
7902 FORD 0
7934 MILLER 0

Funkcja CEIL (n)

Funkcja CEIL zwraca najmniejszą liczbę całkowitą większą lub równą liczbie n przekazanej jako parametr. Na przykład:

WYBIERZ CEIL (100) X1, CEIL (-100) X2, CEIL (100.2) X3, CEIL (-100.2) X4

OD DUALA

Funkcja TRUNC (n [, m])

Funkcja TRUNC zwraca liczbę n obciętą do m cyfr po przecinku. Parametr m może nie zostać określony - w tym przypadku n jest obcinany do liczby całkowitej.

WYBIERZ TRUNC (100.25678) X1, TRUNC (-100.25678) X2, TRUNC (100.99) X3,

  TRUNC (100.25678, 2) X4

OD DUALA

Funkcja SIGN (n)

Funkcja SIGN określa znak liczby. Jeśli n jest dodatnie, funkcja zwraca 1. Jeśli jest ujemne, zwracane jest -1. Jeśli jest równa zero, zwracane jest 0. Na przykład:

WYBIERZ ZNAK (100,22) X1, ZNAK (-100.22) X2, ZNAK (0) X3

OD DUALA

Ciekawą cechą tej funkcji jest możliwość przeniesienia m równego zeru - nie występuje błąd podziału o 0.

Funkcja POWER (n, m)

Funkcja POWER podnosi liczbę n do potęgi m. Stopień może być ułamkowy i ujemny, co znacznie rozszerza możliwości tej funkcji.

WYBIERZ MOC (10, 2) X1, MOC (100, 1/2) X2,

  MOC (1000, 1/3) X3, MOC (1000, -1/3) X4

OD DUALA

X1 X2 X3 X4
100 10 10 0,1

W niektórych przypadkach może wystąpić wyjątek podczas wywoływania tej funkcji. Na przykład:

WYBIERZ MOC (-100, 1/2) X2

OD DUALA

W takim przypadku podejmowana jest próba obliczenia pierwiastka kwadratowego liczby ujemnej, co doprowadzi do wystąpienia błędu ORA-01428 „Argument spoza zakresu”.

Funkcja SQRT (n)

Ta funkcja zwraca pierwiastek kwadratowy z n. Na przykład:

WYBIERZ SQRT (100) X

OD DUALA

Funkcje EXP (n) i LN (n)

Funkcja EXP podnosi e do potęgi n, a funkcja LN oblicza logarytm naturalny n (podczas gdy n musi być większe od zera). Przykład:

WYBIERZ EXP (2) X1, LN (1) X2, LN (EXP (2)) X3

Trochę wcześniej dotknęliśmy zagnieżdżonych funkcji, teraz rozważymy je bardziej szczegółowo. Rozważamy również funkcje pracy z wartością NULL oraz funkcje, które pomagają zaimplementować działanie gałęzi w zapytaniu.

Funkcje zagnieżdżone

Funkcje zagnieżdżone używają wartości zwracanej jednej funkcji jako parametru wejściowego do innej funkcji. Funkcje zawsze zwracają tylko jedną wartość. Dlatego można uznać wynik wywołania funkcji za wartość dosłowną, gdy użyje się go jako parametru do wywołania innej funkcji. Funkcje łańcuchowe można zagnieżdżać na dowolnym poziomie zagnieżdżania. Wywołanie funkcji wygląda następująco

Funkcja 1 (parametr 1, parametr 2, ...) \u003d wynik

Zastąpienie parametru funkcji wywołaniem innej funkcji może spowodować wyrażenie formularza

F1 (param1.1, F2 (param2.1, param2.2, F3 (param3.1)), param1.3)

Początkowo funkcje zagnieżdżone są obliczane, zanim ich wyniki zostaną użyte jako wartości wejściowe dla innych funkcji. Funkcje są obliczane od najgłębszego poziomu zagnieżdżenia do najwyższego od lewej do prawej. Poprzednie wyrażenie jest następujące

  1. Obliczana jest funkcja F3 (param1), a zwracana wartość jest wykorzystywana jako trzeci parametr dla funkcji 2, nazwijmy to param2.3
  2. Następnie obliczana jest funkcja F2 (param1, param2.2, param2.3), a wartość zwracana jest używana jako drugi parametr funkcji F1 - param1,2
  3. Na koniec obliczana jest funkcja F1 (param1, param2, param1.3), a wynik jest zwracany do programu wywołującego.

Zatem funkcja F3 znajduje się na trzecim poziomie zagnieżdżenia.

Rozważ prośbę

wybierz next_day (last_day (sysdate) -7, „tue”) z dual;

  1. W tym zapytaniu są trzy funkcje, od niższego poziomu do wyższego - SYSDATE, LAST_DAY, NEXT_DAY. Żądanie jest następujące
  2. Wykonywana jest najbardziej zagnieżdżona funkcja SYSDATE. Zwraca bieżący czas systemowy. Załóżmy, że bieżącą datą jest 28 października 2009 r
  3. Następnie obliczany jest wynik funkcji drugiego poziomu LAST_DAY. LAST_DATE („28-OCT-2009”) zwraca ostatni dzień października 2009 r., Czyli wartość z 31 października 2009 r.
  4. Następnie od tej daty odejmuje się siedem dni - okazuje się, że 24 października.
  5. Na koniec obliczana jest funkcja NEXT_DAY („24-OCT-2009”, „wt”), a zapytanie zwraca ostatni wtorek października - w naszym przykładzie jest to 27-OCT-2009.

Trudno jest zrozumieć i zbudować złożone wyrażenia za pomocą wielu zagnieżdżonych wywołań funkcji, ale przychodzi to z czasem i praktyką. Możesz podzielić takie wyrażenia na części i przetestować osobno. Tabela DUAL jest bardzo przydatna do testowania zapytań z. I wyników wywołań funkcji. Możesz testować i debugować małe komponenty, które są następnie łączone w jedno duże pożądane wyrażenie.

Funkcje rozgałęziające

Funkcje rozgałęziające, znane również jako IF-ELSE, są używane do określania ścieżki wykonania, w zależności od okoliczności. Funkcje gałęzi zwracają różne wyniki, które nie zależą od wyniku oceny warunku. W grupie takich funkcji wyróżnia się funkcje NULL: NVL, NVL2, NULLIF i COALESCE. A także funkcje ogólne reprezentowane przez funkcję DECODE i wyrażenie CASE. Funkcja DECODE jest funkcją Oracle, podczas gdy wyrażenie CASE jest obecne w standardzie ANSI SQL.

Funkcja NVL

Funkcja NVL sprawdza wartość kolumny lub wyrażenia dowolnego typu danych dla wartości NULL. Jeśli wartość wynosi NULL - zwraca alternatywną wartość inną niż NULL, w przeciwnym razie zwracana jest pierwotna wartość.

Funkcja NVL ma dwa wymagane parametry, a składnia to NVL (oryginał, ifnull), gdzie oryginał jest wartością oryginalną do sprawdzenia, a jeśli null wynik jest zwracany przez funkcję, jeśli oryginał ma wartość NULL. Typ danych ifnull i oryginalne parametry muszą być kompatybilne. Oznacza to, że albo typ danych musi być taki sam lub musi być możliwa niejawna konwersja wartości z jednego typu na inny. Funkcja NVL zwraca wartość tego samego typu danych, co typ danych oryginalnego parametru. Rozważ trzy zapytania

Zapytanie 1: wybierz nvl (1234) z podwójnego;

Zapytanie 2: wybierz nvl (, 1234) z podwójnego;

Kwerenda 3: wybierz nvl (substr („abc”, 4), „Brak podciągu”) z dual;

Ponieważ funkcja NVL potrzebuje dwóch parametrów, zapytanie 1 zwróci błąd ORA-00909: niepoprawna liczba argumentów. Zapytanie 2 zwróci wartość 1234, ponieważ sprawdza wartość NULL i ma wartość NULL. Zapytanie trzecie używa zagnieżdżonej funkcji SUBSTR, która próbuje wyodrębnić czwarty znak z ciągu o długości trzech znaków, zwraca NULL, a funkcja NVL zwraca ciąg „Nie ma sbustrowania”.

Funkcja NVL jest bardzo przydatna podczas pracy z liczbami. Służy do konwersji wartości NULL na 0, więc operacje arytmetyczne na liczbach nie zwracają wartości NULL

Funkcja NVL2

Funkcja NVL2 zapewnia większą funkcjonalność niż NVL, ale służy również do przetwarzania wartości NULL. Sprawdza wartość kolumny lub wyrażenia dowolnego typu dla NULL. Jeśli wartość nie jest równa NULL, zwracany jest drugi parametr, w przeciwnym razie zwracany jest trzeci parametr, w przeciwieństwie do funkcji NVL, która w tym przypadku zwraca wartość oryginalną.

Funkcja NVL2 ma trzy wymagane parametry i składnię NVL2 (oryginał, ifnot, ifnull), gdzie oryginał jest wartością do sprawdzenia, ifnotnull jest zwracane, jeśli oryginał nie ma wartości NULL, a ifnull jest zwracane, jeśli oryginał ma wartość NULL. Typy danych parametrów ifnotnull i ifnull muszą być kompatybilne i nie mogą być typu LONG. Typ danych zwrócony przez funkcję NVL2 jest równy typowi danych parametru ifnotnull. Spójrzmy na kilka przykładów.

Zapytanie 1: wybierz nvl2 (1234, 1, „ciąg”) z dual;

Zapytanie 2: wybierz nvl2 (, 1234, 5678) z dual;

Zapytanie 3: wybierz nvl2 (substr („abc”, 2), „Not bc”, „No substring”) z dual;

Parametr ifnotnull w żądaniu 1 jest liczbą, a parametr ifnull jest łańcuchem. Ponieważ typy danych są niekompatybilne, zwracany jest błąd „ORA-01722: nieprawidłowy numer”. Żądanie dwa zwraca parametr if, ponieważ oryginał ma wartość NULL, a wynik będzie równy 5678. Żądanie trzy używa funkcji SUBSTR, która zwraca „bc”, a NVL2 jest wywoływany („bc”, „Not bc”, „No substring”) - który zwraca parametr ifnotnull - „Nie dotyczy”.

Funkcja zerowania

Funkcja NULLIF sprawdza dwie wartości pod kątem tożsamości. Jeśli są takie same, zwracana jest wartość NULL, w przeciwnym razie zwracany jest pierwszy parametr. Funkcja NULLIF ma dwa wymagane parametry i składnię NULLIF (ifunequal, parametr_porównanie). Funkcja porównuje dwa parametry, a jeśli są identyczne, zwraca NULL, w przeciwnym razie parametr ifunequal. Rozważ prośby

Zapytanie 1: wybierz nullif (1234, 1234) z podwójnego;

Zapytanie pierwsze zwraca NULL, ponieważ parametry są identyczne. Wiersze w zapytaniu 2 nie są konwertowane na datę, ale są porównywane jako ciągi. Ponieważ ciągi są różnej długości, parametr ifunequal jest zwracany 24-LIPIEC-2009.

Na rysunku 10-4 funkcja NULLIF jest zagnieżdżona w funkcji NVL2. Z kolei funkcja NULLIF wykorzystuje funkcje SUBSTR i UPPER jako część wyrażenia parametru ifunequal. Kolumna EMAIL jest porównywana z tym wyrażeniem, które zwraca pierwszą literę nazwy w połączeniu z nazwiskiem pracowników, których nazwisko ma 4 znaki. Gdy te wartości są równe, NULLIF zwróci NULL, a wartość zwróci wartość parametru ifunequal. Te wartości są używane jako parametr funkcji NVL2. Z kolei NVL2 zwraca opis tego, czy porównywane elementy są dopasowane, czy nie.

Rysunek 10-4 - Korzystanie z funkcji NULLIF

Funkcja COALESCE

Funkcja COALESCE zwraca pierwszą wartość inną niż null z listy parametrów. Jeśli wszystkie parametry mają wartość NULL, zwracana jest wartość NULL. Funkcja COALESCE ma dwa wymagane parametry i dowolną liczbę parametrów opcjonalnych oraz składnię COALESCE (wyrażenie 1, wyrażenie 2, ..., wyrażenie), gdzie wynikiem będzie wyrażenie 1, jeśli wyrażenie 1 nie ma wartości NULL, w przeciwnym razie wynikiem będzie wyrażenie 2, jeśli nie będzie ono NULL itp. COALESCE to zagnieżdżone funkcje NVL

COALESCE (expr1, expr2) \u003d NVL (expr1, expr2)

COALESCE (wyrażenie 1, wyrażenie 2, wyrażenie 3) \u003d NVL (wyrażenie 1, NVL (wyrażenie 2, wyrażenie 3))

Typ danych wartości zwracanej w przypadku znalezienia wartości innej niż NULL jest równy typowi danych pierwszej wartości innej niż NULL. Aby uniknąć błędu „ORA-00932: niespójne typy danych”, wszystkie parametry inne niż NULL muszą być zgodne z pierwszym parametrem innym niż NULL. Rozważmy trzy przykłady

Zapytanie 1: wybierz łączenie (, , , „a string”) z dual;

Zapytanie 2: wybierz łączenie (, , null) z dual;

Zapytanie 3: wybierz koalesce (substr („abc”, 4), „Not bc”, „No substring”) z dual;

Zapytanie 1 zwraca czwarty parametr: ciąg, ponieważ jest to pierwszy parametr inny niż NULL. Zapytanie dwa zwraca NULL, ponieważ wszystkie parametry są NULL. Kwerenda 3 oblicza pierwszy parametr, otrzymuje wartość NULL i zwraca drugi parametr, ponieważ jest to pierwszy parametr inny niż NULL.

Parametry funkcji NVL2 mogą być mylące, jeśli znasz już funkcję NVL. NVL (oryginał, ifnull) zwraca oryginał, jeśli wartość nie jest równa NULL, w przeciwnym razie ifnull. NVL2 (oryginał, ifnot, ifnull) zwraca ifnot, jeśli oryginał nie ma wartości NULL, w przeciwnym razie ifnull. Zamieszanie wynika z faktu, że drugim parametrem funkcji NVL jest if, podczas gdy dla NVL2 jest ifnotnull. Nie polegaj więc na pozycji parametru w funkcji.

Funkcja dekodowania

Funkcja DECODE implementuje logikę „jeśli to jeszcze”, sprawdzając dwa pierwsze parametry pod kątem równości i zwracając trzecią wartość w przypadku równości lub inną wartość w przypadku nierówności. Funkcja DECODE ma trzy wymagane parametry i składnię DECODE (expr1, comp1, iftrue1 ,,). Parametry te są używane, jak pokazano w poniższym przykładzie pseudokodu.

JEŻELI wyraż1 \u003d comp1, to zwróć iftrue1

W przeciwnym razie, jeśli expr1 \u003d comp2, to zwróć iftrue2

W przeciwnym razie, jeśli exprN \u003d compN, to zwróć iftrueN

W przeciwnym razie zwróć NULL | iffalse;

Po pierwsze, expr1 jest porównywany z comp1. Jeśli są równe, zwracana jest wartość iftrue1. Jeśli wyrażenie1 nie jest równe comp1, to co będzie dalej, zależy od tego, czy ustawione są comp2 i iftrue2. Jeśli jest określony, wartość wyraż1 jest porównywana z wartością comp2. Jeśli wartości są równe, zwracany jest iftrue2. Jeśli nie, to jeśli istnieją pary parametrów compN, parametry iftrueN, expr1 i compN są porównywane, a iftrueN jest zwracane w przypadku równości. Jeśli nie znaleziono dopasowania w żadnym zestawie parametrów, iffalse, jeśli ten parametr został określony lub zwracana jest wartość NULL.

Wszystkie parametry w funkcji DECODE mogą być wyrażeniami. Rodzaj zwracanej wartości jest równy typowi pierwszego elementu sprawdzającego - parametrucomp 1. Wyrażenie expr 1 domyślnie przekonwertowano na typ danych parametru comp1. Wszystkie inne dostępne opcje komp1 ... compN   również domyślnie przekonwertowany na typ comp1. DECODE traktuje wartość NULL jako równą innej wartości NULL, tj. jeśli wyrażenie1 ma wartość NULL, a comp3 ma wartość NULL, a comp2 nie ma wartości NULL, to zwracane jest iftrue3. Spójrzmy na kilka przykładów.

Zapytanie 1: wybierz dekodowanie (1234, 123, „123 to dopasowanie”) z dualnego;

Zapytanie 2: wybierz dekodowanie (1234, 123, „123 to dopasowanie”, „Brak dopasowania”) z podwójnego;

Zapytanie 3: wybierz dekodowanie („szukaj”, „comp1”, „true1”, „comp2”, „true2”, „szukaj”, „true3”, substr („2 szukaj”, 2, 6), „true4”, „ false ”) z podwójnego;

Żądanie pierwsze porównuje wartości 1234 i 123. Ponieważ nie są one równe, iftrue1 jest ignorowane, a ponieważ wartość iffalse nie jest zdefiniowana, zwracana jest wartość NULL. Zapytanie drugie jest identyczne jak zapytanie 1, z tym wyjątkiem, że podano opcję iffalse. Ponieważ 1234 nie jest równe 123, zwracana jest wartość iffalse - „Brak dopasowania”. Zapytanie trzy sprawdza wartości parametrów pod kątem dopasowania wartości wyszukiwania. Parametry comp1 i comp2 nie są równe „wyszukiwaniu”, dlatego wyniki iftrue1 i iftrue2 są pomijane. Znaleziono dopasowanie w trzeciej operacji porównywania elementów comp3 (pozycja parametru 6) i zwracane jest iftrue3 (parametr 7), co jest prawdą 3. Ponieważ znaleziono dopasowanie, nie są wykonywane żadne obliczenia. Oznacza to, że pomimo faktu, że wartość comp4 (parametr 8) pokrywa się również z wyrażem1 - to wyrażenie nigdy nie jest obliczane, ponieważ znaleziono dopasowanie w poprzednim porównaniu.

Wyrażenie CASE

Wszystkie języki programowania trzeciej i czwartej generacji implementują konstrukcję skrzynek. Podobnie jak funkcja DEKODUJ, wyrażenie CASE pozwala zaimplementować logikę „jeśli to wtedy”. Istnieją dwie opcje użycia wyrażenia CASE. Proste wyrażenie CASE ustawia element źródłowy, który ma zostać porównany, a następnie wymienia wszystkie niezbędne warunki weryfikacji. Kompleks (przeszukany) CASE oblicza obie instrukcje dla każdego warunku.

Wyrażenie CASE ma trzy wymagane parametry. Składnia wyrażenia zależy od typu. W przypadku prostego wyrażenia CASE wygląda to tak

CASE search_expr

KIEDY porównanie_program1 NASTĘPNIE iftrue1

}

DZWONEK

Są tacy, którzy czytają te wiadomości przed tobą.
Subskrybuj, aby otrzymywać świeże artykuły.
Email
Imię
Nazwisko
Jak chcesz przeczytać Dzwon
Bez spamu