» »

Ničle v SQl tabeli

Ničle v SQl tabeli

«
1
2 3

mbscorpio69 ::

Živjo!
Kaj lahko naredim, da mi se ničle ne shranijo avtomatski v celicah?
Seveda, če ne vpišem nič.
Uporabljam C# in SQl server.
Hvala.

no comment ::

Če jih ne boš vpisal, se ti ne bodo shranile.

(seveda je to generalni odgovor; mogoče dobiš bolj podrobno razlago, če se malo potrudiš pri opisu tvojega primera?)

Zgodovina sprememb…

MUC ::

Verjetno imaš stolpec označen kot recimo INT in brez omogočene vrednosti NULL. V tem primeru se ti vedno zapiše kot 0.

no comment ::

MUC je izjavil:

Verjetno imaš stolpec označen kot recimo INT in brez omogočene vrednosti NULL. V tem primeru se ti vedno zapiše kot 0.

Ni res.

kuall ::

za to zgoraj mora imet sql polje še default (0).

Ti bi rad, da se ti zapiše NULL namesto 0. Uporabi to v C#:
int? nFirstRow
cmd.Parameters.AddWithValue("@nFirstRow", (object)nFirstRow ?? DBNull.Value);
pomeni to:
če je nFirstRow null zapiši NULL v sql.

ali to:
int nFirstRow
cmd.Parameters.AddWithValue("@nFirstRow", nFirstRow==0 ? DBNull.Value:nFirstRow);

največje vprašanje je v kakšnih CELICAH? mora bit kakšna nastavitev na tej kontroli, karkoli že uporabljaš.

Zgodovina sprememb…

  • spremenilo: kuall ()

mbscorpio69 ::

Hotu sem dodati nekaj slikic ampak mi ne gre.
Ne želim niti 0 niti Null.
Izhod je v DataGridView.

Tody ::

Ce mas int polj bos dobil 0 ob izvozu. Kaj bi imel ti bos moral sam povedat

mbscorpio69 ::

Id je int, če sem zatopil...
Mislil sem da je to pravilo

Tody ::

Pomoje noben ne ve kaj hoces?

Invictus ::

mbscorpio69 je izjavil:

Živjo!
Kaj lahko naredim, da mi se ničle ne shranijo avtomatski v celicah?
Seveda, če ne vpišem nič.
Uporabljam C# in SQl server.
Hvala.

Pravilno nastavit bazo...

No default values...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

DeeJay ::

Če je INT maš opcijo samo 0 ali NULL kokr vem.
Če hočeš prazen string rabiš met polje kot CHAR ali VARCHAR al karkoli že ma MSSQL.

kuall ::

mbscorpio69 je izjavil:

Hotu sem dodati nekaj slikic ampak mi ne gre.
Ne želim niti 0 niti Null.
Izhod je v DataGridView.

Vse se da, samo ti si len pa tu sprašuješ z nejasnimi vprašanji.
Takole je pogosto, če se pogovarjaš s kakšno stranko. Preden razčistiš kaj bi rada že zgubiš živce, je kar umetnost potrepežljivo do konca speljat komunikacijo.

kuall ::

Invictus je izjavil:


Pravilno nastavit bazo...

No default values...


Pravilno nastavljena baza je taka, da imajo vsa polja default vrednosti. Potem se izogneš temu, da moraš delat tole:
isnull (a,0) = isnull (b,0) ampak lahko brezskrbno narediš to a=b, to tudi potem uporablja indexe in dela hitreje.

no comment ::

kuall je izjavil:


Pravilno nastavljena baza je taka, da imajo vsa polja default vrednosti.

Ojej...

Spet kuall modrosti. Hang on tight!

showsover ::

kuall je izjavil:

Pravilno nastavljena baza je taka, da imajo vsa polja default vrednosti. Potem se izogneš temu, da moraš delat tole:
isnull (a,0) = isnull (b,0) ampak lahko brezskrbno narediš to a=b, to tudi potem uporablja indexe in dela hitreje.

Ne, odvisno je od zasnove podatkovnega modela, 0 pomeni vrednost, NULL pomeni brez vrednosti. Se pozna v kalkulacijah po vertikali.

smacker ::

OP: V bazi ne moreš imeti 'nič'. NULL nakazuje, da je tam prazno polje. Pri izpisu pa lahko nastaviš, da se namesto NULL izpiše karkoli pač želiš.
        foreach (DataGridViewRow dr in dataGridView1.Rows)
        {
            if (!dr.IsNewRow)
            {
                for (int c = 0; c <= dr.Cells.Count - 1; c++)
                {
                    if (dr.Cells[c].Value == null)
                    {
                        dr.Cells[c].Value = "NULL TEXT"; //Tu lahko daš "", ali "-", ali "/", karkoli pač želiš da se izpiše namesto NULL
                    }
                }
            }
        }
(vir: https://stackoverflow.com/questions/288...
Če urejaš podatke v datagridview, je treba pred zapisom v bazo poskrbet še za obratno pretvorbo, želeni niz nastaviš nazaj v NULL.
Ostali: če nimate pojma, bodite raje tiho.

showsover ::

ok, v tvojem primeru je mogoče null enak DBNull.Value, če je prebran iz baze, sam null ni zadosten...

Zgodovina sprememb…

  • spremenilo: showsover ()

kuall ::

showsover je izjavil:

Ne, odvisno je od zasnove podatkovnega modela, 0 pomeni vrednost, NULL pomeni brez vrednosti. Se pozna v kalkulacijah po vertikali.


A misliš na avg() funkcijo?
Jaz osebno pustim kar null svobodo, če pa naletim na bazo, kjer imajo vse vrednosti default vrednosti sem vesel takega dizajna, ker poenostavi stvari.
Seveda ti null tudi prav pride, ko hočeš npr namesto 0 imeti prazno celico. redko prav pride, se da brez null lepo živet, null večinoma samo komplicira stvari.

showsover ::

Mislim na katerekoli agregatne funkcije, če vzameš zalogo vrednosti [0,1,2,NULL] dobiš drugače kot [0,1,2,0] za katerekoli agregatno funkcijo.
Včasih kakšnih stvari ne smeš poenostaviti, NULL je čisto legitimno stanje v bazi in sicer pomeni NI PODATKA.
Recimo primer, [ime,starost]: ['gtfo',25+], ['kuall',null], ker pač ne vemo kuallove starosti.
Velikokrat NE SMEŠ poenostaviti iskanj, odvisno je sicer od problema, ki ga rešuješ.

Zgodovina sprememb…

  • spremenilo: showsover ()

kuall ::

Lahko daš za starost -1 ali 0 in v kalkulacijo daš where age not -1 pa je. brez null se da čist lepo žvet.

showsover ::

Kuall, glej, NULL je DB standard v bazah, starih vsaj 50 let, -1 ne pomeni NI PODATKA, -1 pomeni -1, 0 ne pomeni NI PODATKA, 0 pomeni 0. Če se ti še nisi srečal, kjer je NULL legitimna in pomembna 'nevrednost', to ne pomeni, da si srečal vse primere vseh podatkovnih baz, podatkovnih modelov, nivoja podatkovnega dostopa ali nivoja poslovne logike, ki NULL razume zelo drugače kot 0. Če še nisi naletel na takšno obdelavo podatkov, morda še boš, če pa ne boš, smo pa drugi, menda nismo ravno od včeraj in naše ure so precej drage.

kuall ::

Tudi ti nisi srečal situacije, kjer bi null nujno rabil, drugače mi ne bi dajal slabega primera s starostjo. -1 pomeni null pri letih. Spomni se boljšega primera, če si zmožen?

showsover ::

Kuall, kar dajva zaključit, tvoje argumentacije so na nivoju junior engineerja, moje pa na nivoju konzultanta za rdbms in NULL je validno stanje v bazi, ki označuje NI PODATKA, ker ga ni bilo možno dobiti, ne smemo pa ničesar domnevati. In če daš ti -1 v bazo, moraš -1 posebej obravnavati. Jaz se odjavljam, ker s takšnimi debatami res ne bova prišla naprej, dokler si vsaj ne prebereš minimalnih osnov v tem smislu. Od tu naprej si prepuščen svojim domnevam.

Zgodovina sprememb…

  • spremenilo: showsover ()

no comment ::

kuall je izjavil:

Spomni se boljšega primera, če si zmožen?

Datum smrti je samo en primer. Pa jih je še tisoč. Ko boš delal kakšno podatkovno skladišče in boš moral za vsak vir vedet katero vrednost si je tam en čoravi kuall zamislil namesto nedoločene vrednosti in to upoštevati v analitičnih orodjih...

Poskusi se ukvarjat še s kakšno drugo stvarjo. Jaz mislim, da boš ugotovil, da informatika ni nujno tvoje močnejše področje... Resno.

kuall ::

tak majster pa se še vedno nisi zmožen spomniti enega dobre primera, kjer bi ti null prav prišel. :))
null je eksotika, ravno tako kot je eksotika int? v c#. eduina razlika je, da nam sql to eksotiko rine pred nos na vsakem koraku, medtem ko v C# je lepo skrita zadaj in jo ponucaš na vsakih x let.

Zgodovina sprememb…

  • predlagal izbris: Greg91 ()

showsover ::

Kuall, pa saj sem ti napisal, kaj pa vem, kakšne primere, ki bi jih TI (prav ti, Kuall) razumel, da pomeni NI PODATKA.
Ker če te koncept NI PODATKA ni jasen v primerjavi z 0 ali -1, veš ZELOOOO malo.
Tako zelo malo, da je tvoje mnenje o čemerkoli v tem smislu praktično nepomembno.

kuall ::

btw ko delaš avg ti funkcija lepo napiše opozorilo, da bo null value spuščena iz kalkulacije. opozorilio v smislu, da ne veš kaj delaš in da bi moral dati where x is not null, če bi hotel pisat točno kodo.

no comment je izjavil:

kuall je izjavil:

Spomni se boljšega primera, če si zmožen?

Datum smrti je samo en primer. Pa jih je še tisoč.

Če jih je tisoč potem ne boš imel problema se spomniti enega namesto pisat debilnih žaljivk?

Zgodovina sprememb…

  • spremenilo: kuall ()

Utk ::

Koliko denarja imaš? Je res vseeno ali 1, 0, -1 ali null?

null je eksotika

Null je najpogostejša vrednost. Če je zate eksotika, se je res za vprašat kaj pa kako delaš.

Ko boš delal kakšno podatkovno skladišče in boš moral za vsak vir vedet katero vrednost si je tam en čoravi kuall zamislil namesto nedoločene vrednosti in to upoštevati v analitičnih orodjih.

Haha, to bi bilo smeha, da moraš še za vsak stolpec imet eno opombo zraven katera vrednost je za nekoga null. Čeprav to vrednost že imamo v standardu. In reče se ji null.

Zgodovina sprememb…

  • spremenil: Utk ()

Zimonem ::

Na pamet ugibat kakšen je konkreten problem je dokaj sholastično. Naj pripelje konja pa bomo prešteli zobe. Francis Bacon.

no comment ::

kuall je izjavil:


Če jih je tisoč potem ne boš imel problema se spomniti enega namesto pisat debilnih žaljivk?

Sem ti že napisal. Ne znaš brat al je šlo takoj v /dev/null?

showsover ::

Poskušajte gledati konstruktivno na zadevo, tudi mene kar strese, ko vidim, kakšna vprašanja so postavljena, ker niso koncepti jasni. Ampak tako to pač je, kdor želi izobraževati, naj, jaz sem dal link na čisto enostavno razlago, ki je bil, izgleda, spregledan.

Naj Kuallu še nekdo razloži NULL vrednost v primeru primary key in foreign key values, če ni preveč zahtevno, čeprav se da to vse izguglat v 1 sekundi.

Zgodovina sprememb…

  • spremenilo: showsover ()

kuall ::

no comment je izjavil:

Sem ti že napisal. Ne znaš brat al je šlo takoj v /dev/null?
Napisal si podatkovno skladišče. Kaj naj bi to pomenilo? Ali moram znati brati iz tvoje betice?

showsover ::

Kuall, podatkovno skladišče je poslovenjen izraz za rdbms.

Tody ::

Rdbms je baza, podatkovno skladišče pa so urjeni podatki za namen analitike. Jebes to ce osnove niso jasne pa potem se joka zakaj ni večjih plač. Int je posatkovni tip v mssql bazi misljen kot stevilke ki imajo celo vrednost. Sveda je najlazje vse v varchar dat samo potem me ne vprasat kako se sesteva zadeva (seveda tako da napises cast in porabis vec sredstev ker te itak boli kurac ker se bo z optimizacijo ukvarjal kdo drug)

no comment ::

kuall je izjavil:

Napisal si podatkovno skladišče. Kaj naj bi to pomenilo? Ali moram znati brati iz tvoje betice?

Napisal sem "datum smrti".

Kaj je default vrednost za katero smo se vsi zmenili? In v katerem ANSI standardu smo se to zmenili?

showsover ::

Ok, distinkcijo data-warehouse vs data-base je Tody še lepše zapisal, kar pa bo verjetno Kualla, dokler ne bo investiral nekaj časa v razširjanje horizontov (kar ni nič sramotnega), verjetno še bolj zmedla.

kuall ::

no comment je izjavil:

Napisal sem "datum smrti".

Zlahka bi za neznan datum smrti uporabili: select CONVERT (date, '9999-01-01')
Boš rekel, kaj pa bo leta 9999, bodo morali na novo pisat kodo?
Saj letnice 10000 v sqlu sploh ne moreš zapisat, vrne napako. Do takrat bodo že vse preuredili.
Ali pa datum DO. Če bi uporabili 9999 namesto null bi prišparali veliko dela, ko moraš v kodi delat tole: between dFrom and isnull (dTo, '9999-1-1') ali or stavke. saj se menda zavedaš, da ti tale isnull zjebe indexe in koda dela počasneje? or tudi upočasni.

zato pravim, da null večkrat škodi kot koristi. koda mora biti velikokrat zarad njega daljša, kot bi lahko bila.
za tiste tvoje analitike pa bi imel lahko dodatno bit kolono: isValFilled. ali pa drugače strukturiraj tabelo.

Še vedno nisi zmožen najti dobrega primera, kjer brez null ne bi mogli živeti. Null je eksotika, ki večkrat škodi kot koristi po mojih izkušnjah.

showsover ::

kuall je izjavil:

po mojih izkušnjah.

Prav, tvoje izkušnje niso merodajne, industrijski standardi pa so merodajni.

kuall ::

Sej ne vem kdo je starejši, SQL ali ti.

showsover ::

Odgovor je resnično neverjeten, sem sam preveril.
:)

no comment ::

kuall je izjavil:


Zlahka bi za neznan datum smrti uporabili: select CONVERT (date, '9999-01-01')

Zlahka bi, ja. Zlahka bi zapisal tudi '99991231' ali pa '30990101', sej kdo pa bo živel tako dolgo. Če ne vidiš koliko problemov taki arbitrarni defaulti prinesejo, to pomeni samo to, da kaj dosti podatkov še nisi premetaval. Se da razumet.

Da pa ne uspeš spregledat in goniš svoje...

Utk ::

Pa je res nek datum med nekim datumom in null? Je res null maksimalen datum? Kaj pa če je minimalen?

showsover ::

Še ta zanimivost (je zanimivost za tiste, ki ne poznajo), je NULL dovoljen v FK polju ali ne in če je, kaj pomeni?
Kaj pa recimo primer v samosklicevalni tabeli in v polju parentid (ne) vsebuje null?
Auch, noro, a, Kuall?
:)

no comment ::

Seveda je. Kuall bi nas pa prisili, da bi v vse FK tabele morali vstavljati poseben zapis za 'pojmanimam'.

showsover ::

Bodimo konstruktivni, morda pa bo Kuall rekel sam pri sebi 'Jebenti, sem ga posral, fantje pa morda vseeno nekaj vejo, dam še jaz to malo raziskat'?

kuall ::

showsover je izjavil:

Še ta zanimivost (je zanimivost za tiste, ki ne poznajo), je NULL dovoljen v FK polju ali ne in če je, kaj pomeni?
Kaj pa recimo primer v samosklicevalni tabeli in v polju parentid (ne) vsebuje null?
Auch, noro, a, Kuall?
:)

NOT NULL FK polje enostavno tako rešiš, da v Primary key vstaviš vrstico, ki pomeni "null", npr prazen string, max datum itd. Tako je itak vse bolj razumljivo in enostavno. Še vedno niste zmožni najti dobrega primera. Razmišljate kot tipični programerčki, ki bi samo komplicirali stvari. Ni čudno, da pol nič ne dela. :)

Zgodovina sprememb…

  • predlagal izbris: Greg91 ()

Sgt. Lipnikar ::

kuall je izjavil:

showsover je izjavil:

Še ta zanimivost (je zanimivost za tiste, ki ne poznajo), je NULL dovoljen v FK polju ali ne in če je, kaj pomeni?
Kaj pa recimo primer v samosklicevalni tabeli in v polju parentid (ne) vsebuje null?
Auch, noro, a, Kuall?
:)

NOT NULL FK polje enostavno tako rešiš, da v Primary key vstaviš vrstico, ki pomeni "null", npr prazen string, max datum itd. Tako je itak vse bolj razumljivo in enostavno. Še vedno niste zmožni najti dobrega primera. Razmišljate kot tipični programerčki, ki bi samo komplicirali stvari. Ni čudno, da pol nič ne dela. :)


Ta je šele dobra...bogi tisti, ki mora za tabo vzdrževat tako bazo ali pa backend.

showsover ::

Kuall, ok, vse si povedal, izgubljen primer si, pusti podatkovne baze, to očitno res ni zate.

kuall ::

Jaz argumentiram vi pa spuščate debilne žaljivke, to je do zdaj edina dokazana razlika med nami. Ponavadi se k žaljivkam zatečejo zgube. Na slo techu je polno zgub vidim. 8-)

To pišem zato, ker sem imel priliko delati z bazami, kjer so imela vsa polja not null (skoraj vsa pa še tista, ki niso imela bolje, da bi imela) in takimi, kjer so bila vsa polja null. bolj prijetno je bilo delati z bazo, kjer so bila polja not null.

Zgodovina sprememb…

  • predlagal izbris: Greg91 ()

showsover ::

Kuall, potem si pač delal z enostavnimi bazami brez posebnih relacij med podatki, verjetno za web, kjer je bil glavni problem pisanje enostavnih filtrov. Na tvoje veselje (v bistvu, žalost), se podatkovni modeli ne končajo pri tako enostavnih postavitvah in neki vpeljevanjih dodatnih polj, ki označujejo, ali je neko drugo vsebuje pomensko vrednost ali ne; NULL obstaja z razlogom in ne gre samo za tvoj convenience pisanja enostavnih filtrov (namreč, nisi izkazal, da ti je kaj več jasno v relacijskih bazah), ker sicer ti ni jasno in te moti, ker pač moraš dodati še kakšen OR nekje. Namreč, tvoje razmišljanje (na osnovi tvojih izraženih izkušenj) kaže predvsem na to, da bi rad vozil avion, pa še komaj veš, kako se vrata na avtu zaprejo. Kdo je zguba ali ne, kažejo predvsem bilance.

PS: Se opravičujem, ker sem domneval, da se te da kaj naučiti, bom sledil nasvetu ostalih.

Zgodovina sprememb…

  • spremenilo: showsover ()
«
1
2 3


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Registrska označba NULL lastniku povzroča težave in stroške

Oddelek: Novice / Ostale najave
215939 (2838) MrStein
»

SQL vprasanje (strani: 1 2 )

Oddelek: Programiranje
687822 (4501) BivšiUser2
»

PostgreSQL pomoč

Oddelek: Programiranje
162346 (1839) Mato989
»

Nova različica podatkovne baze PostgreSQL 9.5 prinaša obilico novosti (strani: 1 2 )

Oddelek: Novice / Ostala programska oprema
5716280 (13146) McAjvar
»

MS Access (strani: 1 2 )

Oddelek: Programiranje
646989 (5047) travica

Več podobnih tem