Bug u Oracle-u

Bug u Oracle-u

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Bug se odnosi na sve verzije Oracle-a

Ukoliko imate string (char/varchar) polje, nikada ga ne smete porediti sa praznim stringom.
Oracle nema prazan string tako da bi poredjenje sa istim trebalo da izazove gresku, medjutim, to se ne dogadja

Bez obzira na ostale filtere i logicke operacije POLJE <> '' ili POLJE = '' nece doneti ni jedan rezultat niti ce prikazati gresku.

recimo da imamo 2 registra u bazi. Jedno u polju IME ima "beli", a drugo je NULL.

select * from Imena where (IME<>'' or IME is not null) nece da prikaze ni jedan registar.

Ovaj SQL ce biti izvrsen uspesno na svim bazama osim na Oracle-u.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • meka  Male
  • Počasni građanin
  • Pridružio: 06 Avg 2003
  • Poruke: 811
  • Gde živiš: Novi Sad / Vojvodina

Kad smo već kod Oracle-a, ne daj bože da morate da promenite default port. Nikome to još nije pošlo za rukom pa da još i radi. Barem ne da sam ja čuo. PostgreSQL mi radi posao i stvarno ne znam šta bi me nateralo da ga menjam.



offline
  • Pridružio: 18 Apr 2003
  • Poruke: 1819
  • Gde živiš: Beograd

beli0135 ::Bug se odnosi na sve verzije Oracle-a

Ukoliko imate string (char/varchar) polje, nikada ga ne smete porediti sa praznim stringom.
Oracle nema prazan string tako da bi poredjenje sa istim trebalo da izazove gresku, medjutim, to se ne dogadja

Bez obzira na ostale filtere i logicke operacije POLJE <> '' ili POLJE = '' nece doneti ni jedan rezultat niti ce prikazati gresku.

recimo da imamo 2 registra u bazi. Jedno u polju IME ima "beli", a drugo je NULL.

select * from Imena where (IME<>'' or IME is not null) nece da prikaze ni jedan registar.

Ovaj SQL ce biti izvrsen uspesno na svim bazama osim na Oracle-u.


pa ne razumem, jel ovo samo konstatacija ili problem?

A da probas IME IS NULL?

offline
  • meka  Male
  • Počasni građanin
  • Pridružio: 06 Avg 2003
  • Poruke: 811
  • Gde živiš: Novi Sad / Vojvodina

Prvo, zar ne bi bilo logičnije da ide prvo `is not null` provera pa tek onda da li je string prazan? Možda sam ja samo malo suviše C++ programer. Smile

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Ne, niste ukapirali poentu pisca.

Koliki god i kakav god uslov da imate, ako poredite string polje sa praznim stringom '', rezultat je 0 registara. Znaci na sve filtere, ako poredetite sa praznim, dobijate nista.

To je BUG. Ne prikazuje gresku i ne radi.

Druge baze mogu da imaju prazan string u string polju, oracle ne... ali bar da onda prikaze gresku...

Glavni problem je bio sto nas program radi na svim bazama... i kako sad ja da testiram da li je prazan string? Jedini nacin je

if Server.Type = stOracle then ..... else .....

offline
  • meka  Male
  • Počasni građanin
  • Pridružio: 06 Avg 2003
  • Poruke: 811
  • Gde živiš: Novi Sad / Vojvodina

Pa skontao sam i na početku o čemu bi trebala biti reč samo nisam baš bio siguran. U svakom slučaju, hvala, jer i ja to sranje moram da koristim na faxu.

Ko je trenutno na forumu
 

Ukupno su 983 korisnika na forumu :: 43 registrovanih, 4 sakrivenih i 936 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Bane san, bokisha253, BORUTUS, d bos, denisnapast2015, Dežurni pod palubom, DonRumataEstorski, Excalibur13, Frunze, Georgius, ILGromovnik, Ilija Cvorovic, Lieutenant, lord sir giga, Lošmi, mercedesamg, MilosKop, milutin134, miodrag, MiroslavD, mnn2, moldway, nenaddz, Neutral-M, novator, Parker, pein, pirke96, Prašinar, raketaš, Romibrat, Sirius, SlaKoj, Stanlio, stegonosa, tubular, vathra, VJ, Vlada1389, vladetije, Zoca, šumar bk2