NVL, NVL2 - lamerskie, ale nie dla mnie.... POMOCY!
ďťż
NVL, NVL2 - lamerskie, ale nie dla mnie.... POMOCY! Zobacz wiadomości
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
NVL, NVL2 - lamerskie, ale nie dla mnie.... POMOCY!
ddat - 01-03-2007 00:01 NVL, NVL2 - lamerskie, ale nie dla mnie.... POMOCY!
czesc mam następujący problem w Oraclu. Chcę aby w wyniku zapytania w zwracana była wartość, a jeśl warunek zapytania nie zostanie spełniony to żeby zwracana była inna wartość, ale np. jakiś teste w stylu 'dasdas'. Próbowałem to zrobić bez wnikania w PL/SQL, bo go nie znam ale w wyniku standardowych komend SQL dla Oracle. Próbowałem dodkonac tego w następujący sposób:
NVL(rozmiar_buta, 'brak rozmiaru') from buty where id_zolnierza=11111
ale system nie pozwala na wpisanie w pozycji nr 2 ('brak rozmiaru') niczego innego poza wartością liczbową. Wartość liczbową, np 0 zwraca bez problemu w razie nie spełnienia warunku NVL. To pewnie urok tej funkcji(??). Ale ja mam pytanie, czy nie idzie tego jakoś obejść, aby w razie nie spełnienia warunku był wypisywany DOWOLNY ciąg znaków?
I również aby w przypadku nie odnalezieina odpowiedniego wpisu rekordu do wyszukiwania (tzn. w moim przypadku braku zolnierza (id_zolnierza) o zadanym numerze (w podanym przykładzie 111111) tez był zwracany określony ciąg znaków (np. - 'brak zolnierza').
pozdrawiam i bardzo proszę o pomoc bo strasznie utknąłem w miejscu i nie mam już siły, a jestem bardzo początkujący w zagadkowym świecie zapytań SQL, który coraz bardziej mnie intryguje.
ddat wrote: > czesc > mam następujący problem w Oraclu. Chcę aby w wyniku zapytania w zwracana > była wartość, a jeśl warunek zapytania nie zostanie spełniony to żeby > zwracana była inna wartość, ale np. jakiś teste w stylu 'dasdas'. Próbowałem > to zrobić bez wnikania w PL/SQL, bo go nie znam ale w wyniku standardowych > komend SQL dla Oracle. > Próbowałem dodkonac tego w następujący sposób: > > NVL(rozmiar_buta, 'brak rozmiaru') from buty > where id_zolnierza=11111 > > ale system nie pozwala na wpisanie w pozycji nr 2 ('brak rozmiaru') niczego > innego poza wartością liczbową. Wartość liczbową, np 0 zwraca bez problemu w > razie nie spełnienia warunku NVL. To pewnie urok tej funkcji(??). Ale ja mam > pytanie, czy nie idzie tego jakoś obejść, aby w razie nie spełnienia warunku > był wypisywany DOWOLNY ciąg znaków?
Rozmiar_buta masz pewnie zdefiniowany jako jakiś typ liczbowy i taki typ chce zwrócić nvl. Funkcj to_char powinna Ci pomóc.
> I również aby w przypadku nie odnalezieina odpowiedniego wpisu rekordu do > wyszukiwania (tzn. w moim przypadku braku zolnierza (id_zolnierza) o zadanym > numerze (w podanym przykładzie 111111) tez był zwracany określony ciąg > znaków (np. - 'brak zolnierza').
A to już musisz na wyższym poziomie obsłużyć.
-- P.M.
Dariusz Olczyk - 05-03-2007 17:32
ad.1 select decode(nvl(rozmiar_buta,0),0,'brak rozmiaru',rozmiar_buta) from ... ad.2 Nie znam prostej odpowiedzi. Troszkę bardziej złożona to zastosowanie kursora.
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona