TCH (statz) | #1, Főfasz (10443) |
5477 | #26ad | ^ | Idézet | Sat, 20 Jul 2013 00:01:32 +02 |
78.92.*.* | *.catv.pool.telekom.hu |
Kurwa nagy +1. Kurwa nagy +1. Kurwa nagy +1. C-C-C-COMBO BREAKER!!! Félreértetted amit mondtam. Nem NULL tartalmú mezőkkel végeztem műveletet, ha megnézed mégegyszer a kapott eredményeket select count(*) from cc_codes; COUNT(*) 14135600 select count(*) from cc_codes where answer is not null; COUNT(*) 14135500akkor látod, hogy a mezők java nem volt NULL, tehát én nem NULL-al végeztem összehasonlítást, hanem érvényes sztringekkel. Azt tudom, hogy NULL-al nem lehet komparálni, tehát NULL állapotú mező komparálása mindig hamisat ad vissza, de én nem is ezt csináltam. A mező beállítása volt, hogy lehet NULL (nem a mi hibánk!) minek következtében a szarákül egyfelől az INSERT kérésekben található összes üres sztringet NULL-ként szúrta be, másfelől pedig a tartalommal bíró mezőket sem volt képes összehasonlítani az üres stringgel, gyakorlatilag az orákül szerint ('blablabla' != '') hamisat ad vissza, márpedig ha a mező tartalma nem egy üres sztring, akkor a select count(*) from cc_codes where answer <> ''; ugyanúgy vissza kéne, hogy adja a sort, kivéve persze, ha a mező NULL - ahogy te is mondtad - de a mező nem volt NULL. Ez konkrétan azt jelenti, hogy az oracle szerint ('' == NULL) && (NULL != ''), lévén az üres sztringet nem csak a beszúrásnál, de a keresésnél is NULL-nak vette, a NULL értékeket, meg nem vette üres sztringnek, mert ha a kettő közül bármelyiket nem csinálta volna, akkor adott volna vissza sorokat, ergo EGYSZERRE csinálja a kettőt, nála az üres sztring az NULL, de a NULL nem üres sztring! Mijezmárbazdmeg?! A select count(*) from cc_codes where answer <> ''; odabent így értelmeződött: select count(*) from cc_codes where answer <> NULL; ami naná, hogy hamisat ad vissza, de bazdmeg, én nem NULL-ra kerestem, hanem üres sztringre! A szarákül nem az általad leírt SQL standard szerint dolgozik, a mellékelt példa bizonyítja, hogy simán megfelelteti az üres sztringet a NULL-nak, ami viszont epic fail, mert INSERT INTO pina (faszom) VALUES (NULL); baromira nem ugyanaz, mint INSERT INTO pina (faszom) VALUES (''); (ld. mindjárt a PgSQL-es példámban), de még nagyobb fail, hogy aztán visszafele már nem csinálja! A szarákül konkrétan magasról leszarja az SQL szabványt! Egyszer így, egyszer meg úgy működik, aztán dolgozz vele, ha tudsz! A bizonyítás kedvéért (bár az axióma, hogy az orákül fos, tehát nem szorul bizonyításra): íme PgSQL-ben NULL alapbeállítású mező, tartalommal, üres sztringgel és NULL értékkel: CREATE TABLE "pina" ( "faszom" character varying(15) NULL ); -- 0.003 s INSERT INTO "pina" ("faszom") VALUES ('shgfdhsfdh'); -- 0.002 s INSERT INTO "pina" ("faszom") VALUES ('32trtfj'); -- 0.002 s INSERT INTO "pina" ("faszom") VALUES (NULL); -- 0.001 s INSERT INTO "pina" ("faszom") VALUES (''); -- 0.002 s select count(*) from pina where faszom <> ''; count 2 -- ahogyan az SQL szabvanynak megfelel -- a ket tartalommal biro sor igen, az ures stringes sor nem es a NULL sem, mert azt nem lehet komparalni -- szarakulben ez NULLA sort adott vissza! select count(*) from pina where faszom = ''; count 1 -- ez is megfelel az SQL szabvanynak -- az ures stringes sor igen, a ket tartalommal biro sor nem es a NULL sem, mert azt nem lehet komparalni -- szarakulben EZ IS nulla sort adott vissza! select count(*) from pina where faszom is null; count 1 -- igy van, egy NULL sor van! SQL standard-nek megfelel. -- igaz, ez mar szarakulben is jo volt select count(*) from pina where faszom is not null; count 3 -- es ez is jo, mert egy NULL sor van, harom nem az. SQL standard pipa.QED. A szarákül rohadtul nem az SQL szabványnak megfelelően csinálta, amit csinált. A PgSQL igen. PostgreSQL (& Adminer :) ) gigarulez, szarákül gigasux. Egyszerűen szar a szarákül. Mit várunk attól a ratyi motortól, ami még INSERT-ben sem enged szekvenciákat használni, meg 4000 karakterenként akar feltölteni egy 128 TB-s mezőt, arról meg ne is beszéljünk, hogy ha egy NOT NULL mezőnek alapértéket akar adni az ember, akkor szerinte hiányzik egy zárójel... Vándékkönyv v3.20.0: • PREVIEW!!! \o/ • Innentől rákérdez az elküld gomb, hogy elküldöd-e, hogyha az ember véletlen arra nyomna a preview helyett, oszt elmenne szarul a post. |