Poslao: 13 Apr 2006 18:05
|
offline
- beli0135
- Executor
- 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.
|
|
Poslao: 13 Apr 2006 18:19
|
offline
- meka
- 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.
|
|
|
|
Poslao: 14 Apr 2006 10:50
|
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?
|
|
|
|
Poslao: 14 Apr 2006 13:49
|
offline
- meka
- 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.
|
|
|
|
Poslao: 14 Apr 2006 16:17
|
offline
- beli0135
- Executor
- 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 .....
|
|
|
|
Poslao: 16 Apr 2006 12:11
|
offline
- meka
- 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.
|
|
|
|