Was ist der Datentyp für NULL
, wenn dieser Wert für keine Daten in eine Datenbank übergeben wird?Wie NULL-Datentyp übergeben?
Antwort
NULL ist der Wert für 'undefiniert'. Daher kann jeder Typ in einer Datenbank 'undefiniert' sein, da es eine Eigenschaft der Spalte ist: Ein Wert einer Zeile für die spezifische Spalte kann 'undefiniert' sein, was bedeutet, dass sie 'NULL' ist, unabhängig vom Typ. Solange die Spalte nullfähig ist.
Ich denke DBNULL oder NULL ist ein besonderer Typ.
Es gibt NO Datentyp NULL. NULL selbst bedeutet ABWESENHEIT von Daten. Wenn es keine Daten gibt, wie kann es geben?
normalerweise NULL ist, sein eigener Datentyp - die Art von 1 „integer“, die Art des Typs NULL ist „NULL“
Ich denke, die Frage selbst besiegt. Wenn NULL einen Datentyp hätte, wären Sie nicht gezwungen, ihn bei jeder Instanziierung außerhalb seines Standardwerts zu ändern. Zum Beispiel, wenn Sie es als ein Zeichen erstellen, aber dann in den Wert eines Objekts erzwingen?
NULL==NULL
Das ist alles.
Es bestand die Gefahr, dass die meisten Plattformen, die NULL unterstützen, NULL an den Vergleich "NULL == NULL" zurückgeben würden. Dies macht Ihren obigen Vergleich ungültig, da der Vergleich mit NULL ohne Bedeutung ist es ist null mit ...IS NULL –
Das hat mich zum Lächeln gebracht und ich sehe was du sagst. Kreieren Sie einen, um etwas Neues zu lernen ** jeden Tag. – bobby
NULL
kann in einen beliebigen Datentyp umgewandelt (umgewandelt) werden, aber Datentypvergleiche mit NULL
geben immer FALSE
zurück.
-1, weil Vergleiche mit NULL zu NULL und nicht zu FALSE führen. In einer IF-Anweisung in PL/SQL wird NULL wie FALSE behandelt, aber NOT NULL ist NULL, nicht TRUE –
Das gleiche gilt für WHERE-Klauseln usw. –
Datentyp für NULL
ist ebenso sinnlos wie Datentyp für 0
: es INTEGER
sein kann, FLOAT
oder ein VARCHAR
. Sie können es nicht nur vom Wert unterscheiden.
NULL
ist legitimer Wert in fast jeder Datentypdomäne, was bedeutet, dass der tatsächliche Wert fehlt.
Es ist auch sinnlos, Datentypen außerhalb des Kontextes bestimmter RDBMS
zu diskutieren.
In SQLite
zum Beispiel, Datentypen sind Wert gebunden, nicht spaltengebunden, und NULL
ist ein First-Class-Datentyp per se.
In Oracle
sind die Datentypen strenger definiert. Zum Beispiel diese Abfrage funktioniert:
SELECT COALESCE(dt, i)
FROM (
SELECT CAST(NULL AS DATE) AS dt, CAST(NULL AS DATE) i
FROM dual
) q
und dies nicht:
SELECT COALESCE(dt, i)
FROM (
SELECT CAST(NULL AS DATE) AS dt, CAST(NULL AS NUMBER) i
FROM dual
) q
, da diese Abfrage zwei Säulen unterschiedlicher Datentypen zurückgibt, beide mit Werten von NULL
und COALESCE
erfordert sowohl Argumente, um denselben Datentyp zu haben.
Es ist besser zu sagen, dass ein NULL
eines beliebigen Datentyps implizit in eine NULL
für einen anderen Datentyp konvertiert werden kann.
Zum Beispiel kann ein VARCHAR
kann implizit in ein INTEGER
umgewandelt werden, wenn sie Wert von 0
haben, kann aber nicht, ob es Wert 'some_string'
hat.
Für NULL
kann jeder Datentyp implizit in einen anderen Datentyp konvertiert werden, wenn die implizite Konvertierung zwischen ihnen überhaupt erlaubt ist.
Null hat keinen spezifischen Datentyp in SQL. Jede nullwertfähige Spalte oder Variable kann null enthalten. Null ist niemals gleich oder ungleich allem. Sie können eine Variable Halte null auf eine andere Variable gegossen und null erhalten, zum Beispiel:
declare @a integer
set @a = null
select convert (float, @a)
----------------------
NULL
(1 row(s) affected)
Eigentlich in Powershell zu vergleichen $ null -eq $ null gibt Falsch. Außerdem wird -not $ null Ihnen True geben, daher wird es hier als False dargestellt. Ich weiß, PowerShell ist vielleicht kein gutes Beispiel, aber immer noch :)
In SQL ist ein NULL ein "Zeichen" (etwas anderes als ein Wert), das für jeden SQL-Typ gelten kann. Es ist also orthogonal zum Typ.
Normalerweise ist SQL NULL
kein Typ zugeordnet. Es gibt jedoch Ausnahmen. Die Datenbankmodule postgresql und derby (javadb) verlangen, dass null einen Typ hat. Mit anderen Worten, sie unterstützen nicht typisiertes null. Daher können Abfragebedingungen wie NULL IS NULL
fehlschlagen. Hier muss NULL
ein Typ angegeben werden, der erwartete Typ des Ziels, das den Wert NULL
verarbeitet. In diesem Fall erscheint das albern, weil es kein Ziel gibt und das kann kontraproduktiv sein.
Siehe CAST function: -- you must cast NULL as a data type to use it
Siehe Queries with guarded null Parameter fail und Add support for setObject(arg, null)
stimmen Sie bitte für diese Probleme, so dass die ungeraden Datenbank-Engines ihre Gewohnheiten zu ändern.
Prabhahar, jede Art von Datenbanktreiber hat seine eigene Art der Handhabung NULL
. Sie müssen die Treiber-API für die spezifische Datenbank untersuchen.
Zum Beispiel, wenn Sie die Java-Derby-Datenbank verwenden, einfach in dem Java-nativen Typ passieren, null wie in Ian Bjorhovde's answer to "Derby's Handling of NULL Values" gezeigt:
insert into T_AUTHOR (
ID, FIRST_NAME, LAST_NAME,
DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS)
VALUES (
1000, 'Lukas', 'Eder',
'1981-07-10', null, null
);
Hier ist ein weiteres null
Beispiel JDBC:Inserting null to Integer column:
pst.setNull(4, java.sql.Types.INTEGER);
- 1. Wie kann ich Variable übergeben
- 2. Wie ID mit Html.BeginForm() übergeben?
- 3. wie Querystring in Winkelrouten übergeben?
- 4. Wie Parameter an Abfrage übergeben?
- 5. Wie Übergeben Klasseninstanz an LowLevelMouseProc?
- 6. Wie übergeben Sie einen Mitgliedsfunktionszeiger?
- 7. Wie Parameter an OnClickListener übergeben?
- 8. CakePHP wie einen Fremdschlüssel übergeben
- 9. Wie $ (this) zu übergeben Wähler
- 10. Wie Fensterhandle an Wndproc übergeben?
- 11. Delegate-Funktion, wie Referenz übergeben?
- 12. Wie Verweis auf Combobox übergeben?
- 13. Mit getComponent wie Requisiten übergeben?
- 14. Wie übergeben Sie mehrere Aufzählungswerte in C#?
- 15. Wie mehrere Parameter an Eval() übergeben?
- 16. Wie übergeben Sie Konstruktorargumente mit Mockito
- 17. vb6 - Wie eine Funktion für Parameter übergeben?
- 18. Wie übergeben Variablen an page.executescript() in Capybara
- 19. Wie übergeben Sie NameValueCollection in SqlCommand C#?
- 20. Wie URL-Parameter auf einen Iframe übergeben?
- 21. Wie Zeiger zurück in Ctypes übergeben?
- 22. Wie ein Objekt an Postgres übergeben werden
- 23. Wie eine ganze Zahl zwischen Aktivitäten übergeben?
- 24. Verwirrt von, wie "durch Wert übergeben" funktioniert
- 25. Wie übergeben Argument an PuTTY-Befehle Datei
- 26. Wie Elasticsearch JSON-Ausgabe an .net übergeben
- 27. Wie Knotenwerte dynamisch nacheinander übergeben werden?
- 28. Wie übergeben Wert von Helfer zu Controller
- 29. Libew, Wie Argumente an relevante Rückrufe übergeben
- 30. Wie Übergabeparameter an Djangos ModelForm-Instanz übergeben?
Ja, das war es, was ich lernen musste, als ich zu meiner Firma kam. NULL ist die Abwesenheit, es ist kein Typ, aber es kann durch Typen dargestellt werden (d. H. Das .NET-Framework hat DBNull.Value als eine Darstellung des NULL-Werts). – Kezzer
Ja stimme ich zu. In jeder Technologie müssen Sie * etwas * haben, um es darzustellen. (Sie können nichts mit nichts darstellen). Aber als Konzept bedeutet NULL "nichts". Buchstäblich! – Hemant
@Hemant, während das eine gute Datenbankdefinition von NULL ist, wird dieses abstrakte Konzept durch einen tatsächlichen Wert dargestellt. Unter der Annahme, dass Prabhahar den Wert in einer Programmiersprache an die Datenbank übergeben will, wird es eine zugehörige Datenbanktreiber-API geben, die eine Implementierung von NULL übergeben wird. – MAbraham1