wenn du den Wert als Zahl speicherst kürzt er dir natürlich die unnötigen Nullen weg. Speicher es doch einfach als String (varchar) :-)
Hallo
Ich habe eine Datenbank und möchte über ein Formular den Wert "000" oder "00" als Bild-ID eintragen. Jedoch schreibt er mir bloß immer 0 in die Spalte.
Kann mir hier jemand einen Tipp geben? Muss ich der Spalte ein bestimmtes Format geben?!?
lg
dipo
Der Charakter eines Menschen lässt sich leicht daran erkennen, wie er mit Leuten umgeht, die nichts für ihn tun können.
wenn du den Wert als Zahl speicherst kürzt er dir natürlich die unnötigen Nullen weg. Speicher es doch einfach als String (varchar) :-)
Viele Grüße
Matthias.
http://www.bruecksen.de
Hihi, kenne ich, man sieht den Wald vor lauter Bäumen nicht und das einfachste Problem ist plötzlich nicht lösbar ...
hmm, jaaaa
ich habs schon mit allen möglichen Funktionen probiert...
Der Charakter eines Menschen lässt sich leicht daran erkennen, wie er mit Leuten umgeht, die nichts für ihn tun können.
hm... wenn ich die Spalte jetzt allerdings als varchar definiere werden die Zahlen nicht mehr richtig sortiert.
zb.
490
5
503
6
655
wie könnte ich das in den griff bekommen??
Der Charakter eines Menschen lässt sich leicht daran erkennen, wie er mit Leuten umgeht, die nichts für ihn tun können.
ein impliziter Cast sollte die Lösung deines Problems sein:
Code:SELECT column FROM table_name ORDER BY column + 0;![]()
Geändert von Bruecksen (17.05.2010 um 08:55 Uhr)
Viele Grüße
Matthias.
http://www.bruecksen.de
naja einen impliziten Cast eben ;-)
im vergleich dazu könntest du die Spalte auch explizit Casten:
Unter einem Cast versteht man das umwandeln eines Datentypes in einen anderen. Dies kann man expliziet machen, durch den Cast befehl oder man macht dies implizit: bemerkt der MySQL DB Query handler das du auf einer spalte etwas rechnen willst, diese Spalte aber nicht eine Numerische Spalte ist, wird der Wert der Spalte bevor die Rechnung durchgeführt wird in einen Numerischen Typ gewandelt (cast).Code:SELECT column FROM table_name ORDER BY CAST(column AS integer);
Da das Ergebnis der Rechnung ein Numerischer Wert ist, verhällt sich der ORDER BY befehl wie auf einer numerischen Spalte und nicht wie eine varchar Spalte.
Warum nimmt man nun die 0 und nicht die 999 naja verändern wollen wir das order by ergebnis nicht und nehmen daher das Neutrale Element der Addition
hier mal noch ein wenig lesestoff:
http://de.wikipedia.org/wiki/Typumwandlung
http://dev.mysql.com/doc/refman/5.1/...functions.html
Viele Grüße
Matthias.
http://www.bruecksen.de
vielen vielen dank, wieder etwas dazugelernt!!
Der Charakter eines Menschen lässt sich leicht daran erkennen, wie er mit Leuten umgeht, die nichts für ihn tun können.
Hi!
Wollte gerade das Thema wieder aufmachen...
Bei mir hat das Einfügen einer 6-stelligen Nummer mit führender 0 in ein als VARCHAR(6) definiertes Feld auch nicht funktioniert - bis ich gesehen habe, dass ich im INSERT-String des SQL-Statements die Variable mit der Nummer nicht in Anführungszeichen gesetzt habe...
Also aufpassen, dann klappt's auch.
Liebe Grüße,
Whiteflash
live long and prosper...
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)