Kann der MySQL INT-Typ ungleich Null sein?

8

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.

    
dgeare 05.02.2012, 23:57
quelle

4 Antworten

11

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).

    
Bruno Silva 06.02.2012, 00:04
quelle
8

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:

  • Sie müssen die spezielle Syntax "IS NULL"
  • verwenden
  • Jede Liste, die eine Null enthält, wird niemals irgendetwas entsprechen, zB funktioniert WHERE NAME IN (SELECT COL1 FROM SOMETABLE) niemals, wenn einer der ausgewählten Werte null ist
  • Null ist nichts anderes, sogar ein anderes null
  • In einem strikten App-Code (z. B. Java) müssen Sie prüfen, ob ein Wert null ist, oder Sie erhalten eine NullPointerException. Mit einem tatsächlichen Wert vermeidet dies
Bohemian 06.02.2012 00:17
quelle
2

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%     
StudyOfCrying 06.02.2012 00:17
quelle
2

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 !!!

    
Quadrivium 19.05.2015 18:19
quelle

Tags und Links