Ga naar inhoud

[MYSQL] NULL in database zetten


Aanbevolen berichten

Ik zit met een klein probleempje. Ik heb een totomod geschreven voor phpBB. Nadat de uitslag is ingevuld is er de mogelijkheid die met een undoknop weer ongedaan te maken. De uitslag die weggeschreven was in de database moet dan met NULL overschreven worden. Dus echt leeg en geen spatie oid. Ik krijg dat echter niet voor elkaar. Op de server draait: PHP Version 4.3.6 MySQL 4.0.18
Link naar reactie
Het gebruik van count() kan wel eens tot "rare" resultaten leiden... count(*) is inclusief NULL, maar count(kolom) is exclusief NULL. En zo zijn er volgens mij nog wel een paar. Iig is mij geleerd om in het database ontwerp zoveel mogelijk het gebruik van NULL te beperken, dat had ook iets met schaalbaarheid te maken. Hoe het precies zat zou ik even op moeten zoeken... Dit is overigens allemaal niet MySQL-specifiek, voor zover ik weet. - Bas
Link naar reactie
Ik zou je ook aanraden om gewoon een leeg veld te gebruiken, maar hier is in ieder geval de code om een NULL waarde in een veld te zetten: [code:1:14e7729322]INSERT INTO tabel (veld1, veld2) VALUES ('Volgende veld wordt null...', NULL);[/code:1:14e7729322] In een UPDATE query zou het dit worden: [code:1:14e7729322]UPDATE tabel SET veld1 = NULL;[/code:1:14e7729322] Let erop dat je geen aanhalingstekens rond het woord NULL zet in de query. Groetjes, Vic
Link naar reactie
[quote:57e5a02467="Vic"][code:1:57e5a02467]INSERT INTO tabel (veld1, veld2) VALUES ('Volgende veld wordt null...', NULL);[/code:1:57e5a02467][/quote:57e5a02467] Ik hoef alleen maar te updaten, want bij insert komt er nooit direct een waarde in dat veld, want de uitslag is nooit voor de wedstrijd al bekend. [quote:57e5a02467="Vic"]In een UPDATE query zou het dit worden: [code:1:57e5a02467]UPDATE tabel SET veld1 = NULL;[/code:1:57e5a02467][/quote:57e5a02467] Dit had ik al geprobeerd en het werkt niet. Ik gebruik nu maar even dit: [code:1:57e5a02467] $sql = "UPDATE " . COMPETITION_TABLE . " SET result ='' WHERE id = $comp_id "; [/code:1:57e5a02467] Ik ga idd denk ik maar de boel verbouwen en er standaard een 0 in zetten oid.
Link naar reactie
[quote:f4391ea974="BasHamar"]count(*) is inclusief NULL, maar count(kolom) is exclusief NULL.[/quote:f4391ea974] Het is maar wat je raar noemt natuurlijk. Ik vind de doodnormaalste zaak van de wereld. ;) Overigens is er wel wat voor te zeggen dat je NULL's probeert te vermijden, maar het is niet altijd de beste oplossing (zoals in een andere post wordt gesuggereerd) om daarvoor een leeg veld toe te voegen (of bijvoorbeeld een 0). Deze waarden kunnen namelijk ook een "echte" waarde vertegenwoordigen en daarmee kan je bij andere (aggregate) functies weer foutieve uitkomsten krijgen. Maar als je dan toch NULL's wil gebruiken dan moet je er dus wel goed mee omgaan. Vooral bij concats van strings moet je opletten (daar wordt dan ook vaak voorgesteld om helemaal geen NULL's te gebruiken). Als je een beetje rondkijkt op internet zul je overigens zien dat deze discussie ook al tot in den treure is gevoerd in het DB wereldje. En vaak lopen die uit op een (semi-)wetenschappelijke geblaat ;) Komt er op neer dat het volgens theorie dit en standpunt dat absoluut not-done is om te gebruiken, maar helaas zijn de voorgestelde oplossingen vaak weer niet goed bruikbaar in de praktijk. Tja, en dan is het voor mij al heel snel einde discussie :P
Link naar reactie
[quote:3a7e6cb55f="Bill Gates"]Lees [url=http://sql-info.de/mysql/gotchas.html]dit[/url] maar eens, staan overigens nog veel meer MySQL kronkels in...[/quote:3a7e6cb55f]LOL ;). Mijn waardering voor MySQL is nog meer in waarde gedaald en mijn waardering was al weinig (maar ja het is dan ook geen RDBMS.) Sjoerd, volgens mij zou je het met deze link toch moeten kunnen oplossen (mits je nog met NULL wil werken). Bedankt voor de link, Bill! [quote:3a7e6cb55f="Annie"]Het is maar wat je raar noemt natuurlijk. Ik vind de doodnormaalste zaak van de wereld. ;)[/quote:3a7e6cb55f]En ik ook ;). [quote:3a7e6cb55f="Annie"]Als je een beetje rondkijkt op internet zul je overigens zien dat deze discussie ook al tot in den treure is gevoerd in het DB wereldje. En vaak lopen die uit op een (semi-)wetenschappelijke geblaat ;) Komt er op neer dat het volgens theorie dit en standpunt dat absoluut not-done is om te gebruiken, maar helaas zijn de voorgestelde oplossingen vaak weer niet goed bruikbaar in de praktijk. Tja, en dan is het voor mij al heel snel einde discussie :P[/quote:3a7e6cb55f]Die discussie moet juist blijven en hevig gevoerd worden ;)! NULL hoort niet in een database, alleen de huidige RDBMS'en en SQL maken dit erg moeilijk\onmogelijk om dit voor elkaar te krijgen. In theorie is geen enkel huidige RDBMS op de markt zelfs 100% relationeel. Maar zonder druk (discussie) veranderen de huidige RDBMS niet naar een systeem welke in theorie de beste oplossing is. -Rémy
Link naar reactie
[quote:1960c02a3d="Remytje"]Sjoerd, volgens mij zou je het met deze link toch moeten kunnen oplossen (mits je nog met NULL wil werken). Bedankt voor de link, Bill![/quote:1960c02a3d] Ik zie alleen staan hoe ik met INSERT een waarde op NULL zet, maar niet met UPDATE. Als ik de manier van INSERT probeer bij UPDATE krijg ik een error. Ik ga het gewoon oplossen met een defaultwaarde in het veld.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...