Ich erstelle eine MySQL-Datenbank, die aus wöchentlichen Datensätzen besteht, die im letzten Jahrzehnt zurückgehen. Es gibt einige Datenpunkte für aktuelle Datensätze, die jedoch in einigen der älteren Datensätze nicht erfasst wurden. Die fraglichen Felder enthalten alle ganzzahlige Werte und "0" ist ein vollkommen gültiger (und häufiger) Wert für die Datensätze, die die Datenpunkte verfolgt haben. Ich muss in der Lage sein, zwischen einem Wert von Null und nicht existierenden Daten zu unterscheiden. Daher muss ich herausfinden, ob es möglich ist, einen NULL zu speichern, der nicht als '0' (gelesen: BLANK CELL) für einen INT-Typ dargestellt wird. NULL-Werte, die an den DB übergeben werden, werden jedoch als '0' dargestellt (zumindest in phpMyAdmin). Gibt es eine Möglichkeit, dies zu ändern?
Danke für Ihre Hilfe.
Sie können den Wert auf NULL setzen. INSERT INTO table (INT_COLUMN) VALUES (NULL)
ist gültiges SQL (wobei INT_COLUMN eine nullwertfähige int-Spalte ist).
Die Antwort lautet "Ja" - Sie können NULL-int-Spalten haben. Aber solltest du?
Zu oft wird null
missbraucht und missverstanden. In SQL-Datenbanken bedeutet null
"unbekannt". In Ihrer Situation ist die Verwendung von null
perfekt, also "ja - Sie sollten"
Es gibt Fälle, in denen Sie einen bestimmten Wert für "null" verwenden möchten, z. B. -1
für eine Menge. Dieser Ansatz ist gültig und wird verwendet, um den Anwendungscode und SQL zu vereinfachen, da der Umgang mit Nullen in Abfragen ein Schmerz in den Arsch ist:
WHERE NAME IN (SELECT COL1 FROM SOMETABLE)
niemals, wenn einer der ausgewählten Werte null ist Ja, stellen Sie sicher, dass Ihre Tabelle NULL-Werte in der betreffenden Spalte zulässt. Siehe das grundlegende Beispiel unten:
%Vor%Die Auswahl hat das folgende Ergebnis:
%Vor%Es erstaunt mich immer wieder, wie Leute Fragen beantworten, ohne tatsächlich zu lesen, was gefragt wird. Ich sehe das gleiche in phpMyAdmin. Wenn null ausgewählt ist und der Datensatz nicht aktualisiert wird, funktioniert "IS NULL" oder "" oder null nicht. Column INT Wert wird durch etwas erzwungen .... BTW, wenn jemand sagt, Javascript, sie wollen nicht eine Antwort mit 'Unterstrich', JQuery oder eine andere Javascript-Erweiterung, sollte jede solche Antwort ein automatisches -10 zu sein !!!