oracle, wykrywanie typów danych w Varchar2
allerune - 13-11-2006 00:44
oracle, wykrywanie typów danych w Varchar2
Witam Mam proste zadanie, muszę napisać Selecta, który wylistuje wszystkie wiersze, gdzie wartość pola typu varchar2, które sprawdzam jest nullem lub jest liczbą. to_number się wysypuje w przypadku gdy pole nie jest liczbą. Jak to zrobić? Szukam po googlach od 2 godzin i na nic ciekawego nie trafiłem. Dodam jeszcze że jest to Oracle 9, więc wyrażenia regularne z 10g które znam nie działają :-/
ps. dlaczego przy warunku IS IN ('0','1'...'9', NULL) zwraca mi także wiersze zawierające jedną spację (nie jest ona ani cyfrą ani nullem)?
dzięki za pomoc :) allerune
dzibus - 13-11-2006 00:44
allerune wrote: > Witam > Mam proste zadanie, muszę napisać Selecta, który wylistuje wszystkie > wiersze, gdzie wartość pola typu varchar2, które sprawdzam jest nullem lub > jest liczbą. to_number się wysypuje w przypadku gdy pole nie jest liczbą. > Jak to zrobić? Szukam po googlach od 2 godzin i na nic ciekawego nie > trafiłem. Dodam jeszcze że jest to Oracle 9, więc wyrażenia regularne z > 10g które znam nie działają :-/ > > ps. dlaczego przy warunku IS IN ('0','1'...'9', NULL) zwraca mi także > wiersze zawierające jedną spację (nie jest ona ani cyfrą ani nullem)? > > dzięki za pomoc :) > allerune > Witaj.
Sprobuj :
WHERE kolumna BETWEEN 1 AND 9 OR kolumna IS NULL;
Pozdrawiam
ThomasO@cpas.com - 13-11-2006 00:44
allerune wrote: > Witam > Mam proste zadanie, muszę napisać Selecta, który wylistuje wszystkie > wiersze, gdzie wartość pola typu varchar2, które sprawdzam jest nullem lub > jest liczbą. to_number się wysypuje w przypadku gdy pole nie jest liczbą. > Jak to zrobić? Szukam po googlach od 2 godzin i na nic ciekawego nie > trafiłem. Dodam jeszcze że jest to Oracle 9, więc wyrażenia regularne z > 10g które znam nie działają :-/ > > ps. dlaczego przy warunku IS IN ('0','1'...'9', NULL) zwraca mi także > wiersze zawierające jedną spację (nie jest ona ani cyfrą ani nullem)? > > dzięki za pomoc :) > allerune Sproboj: (nie sprawdzone) CREATE OR REPLACE FUNCTION IS_NUMBER_OR_NULL( cPole VARCHAR2 ) RETURN VARCHAR2 AS cRtn VARCHAR2(1); nAny NUMBER; BEGIN cRtn := 'N'; IF cPole IS NULL THEN cRtn := 'Y'; ELSE BEGIN nAny := TO_NUMBER(cPole); cRtn := 'Y'; EXCEPTION WHEN OTHERS THEN NULL; END; END IF; RETURN cRtn; END;
Pozniej w select statement: SELECT ... FROM ... WHERE IS_NUMBER_OR_NULL(<column name>)='Y';
Moze nie najprostszy sposob, ale nic innego nie przyszlo mi do glowy o 11 w nocy. Thomas
Adamm - 13-11-2006 00:47
Użytkownik "allerune" <akcesoria@hurtgsm.mpa.pl> napisał w wiadomości news:9bda4a7b6c44ef7495982af59ced3e02@news.home.ne t.pl... > Witam > Mam proste zadanie, muszę napisać Selecta, który wylistuje wszystkie > wiersze, gdzie wartość pola typu varchar2, które sprawdzam jest nullem lub > jest liczbą. to_number się wysypuje w przypadku gdy pole nie jest liczbą. > Jak to zrobić? Szukam po googlach od 2 godzin i na nic ciekawego nie > trafiłem. Dodam jeszcze że jest to Oracle 9, więc wyrażenia regularne z > 10g które znam nie działają :-/ > > ps. dlaczego przy warunku IS IN ('0','1'...'9', NULL) zwraca mi także > wiersze zawierające jedną spację (nie jest ona ani cyfrą ani nullem)? > > dzięki za pomoc :) > allerune >
select * from tabela where translate (pole , '1234567890','') is null
Pozdrawiam Adam
kamilgrzeszczuk@sen-sys.pl - 13-11-2006 00:48
> Mam proste zadanie, muszę napisać Selecta, który wylistuje wszystkie > wiersze, gdzie wartość pola typu varchar2, które sprawdzam jest nullem lub > jest liczbą. to_number się wysypuje w przypadku gdy pole nie jest liczbą. > Jak to zrobić? Szukam po googlach od 2 godzin i na nic ciekawego nie > trafiłem. Dodam jeszcze że jest to Oracle 9, więc wyrażenia regularne z > 10g które znam nie działają :-/
Przeczytaj ten artykul http://www.oracle.com/technology/ora...o44asktom.html
Pozdrawiam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
Oracle 19g +Insert +Insert +Insert...
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.opx.pl
Cytat
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 |
|