Frage und Problem zu Dateityp DECIMAL(p,s)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frage und Problem zu Dateityp DECIMAL(p,s)

    Hallo,

    ich habe den Feldertyp decimal(9,0) mit attribut:unsigned, Null: Yes, Default: kein Eintrag.

    Ich speicher über ein Formular Daten in dieses Feld. Mein ursprüngliches Ziel war, daß wenn ich in dem Formularfeld nichts reinschreibe, also auch keine 0, daß dann in diesem Datenbankfeld auch nichts drinsteht. Aber es wurde immmer eine 0 eingefügt. Wie erreiche ich daß da nichts drinsteht?
    Jetzt habe ich etwas getestet an den Einstellungen dieses Feldes und habe nun unsigned zerofill gemacht mit der Folge, daß statt z.B. 4000 nun 000004000 drinsteht, also die fehlenden Zeichen auf 9 mit 0 aufgefüllt wurde. Ist dies wieder rückgängig zu machen?

  • #2
    1. Eigentlich sollte wenn NULL Yes ohne Angabe eines Default-Wertes die NULL da stehen. Zur Not NULL explizit Default-Wert angeben.

    2.
    a) Typ wieder auf normal umstellen (bzw. nur unsigned):
    alter table Tabelle change Feld Feld decimal(9,0) unsigned default null
    b) führende Nullen entfernen (eine 0 bleibt über):
    update Tabelle set Spalte=trim (leading '0' from Spalte)

    3. alle 0 durch NULL ersetzen (funktioniert auch vor Entfernen des Zerofill):
    update Tabelle set Spalte=NULL where Spalte=0

    Zu beachten: Beim Einfügen werden bei Decimal (im Gegensatz zu float) führende Nullen mit eingetragen. Das kann aber mit der Query 2b wieder behoben werden; die NULL-Werte bleiben davon unangetastet.

    getestet mit MySQL 3.23.58-max-debug unter Windows
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar

    Lädt...
    X