Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[MYSQL] NULL in database zetten

Sjoerd Boerhout
10 antwoorden
  • 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
  • MySQL doet sowieso vreemd met NULL, het is veel slimmer om gewoon het veld leeg te maken en daar dan op te checken…
  • Niet alleen MySQL doet raar met NULL, je kan het gebruik ervan dus sowieso altijd beter vermijden…

    - Bas
  • Sjoerd,
    Post eens de SQL-string die je naar de DB stuurt.

    Bill, Bas,
    Wat gaat raar met NULL?

    -Rémy
  • 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
  • [quote:a5e76aa84e="Remytje"]Wat gaat raar met NULL?[/quote:a5e76aa84e]Lees dit maar eens, staan overigens nog veel meer MySQL kronkels in…
  • 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
  • [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.
  • [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
  • [quote:3a7e6cb55f="Bill Gates"]Lees dit 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

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.