Wie ersetze ich einen NULL-Wert in der Auswahl durch eine leere Zeichenfolge? Es sieht nicht sehr professionell aus, "NULL" -Werte auszugeben.
Dies ist sehr ungewöhnlich und aufgrund meiner Syntax würde ich erwarten, dass es funktioniert. Ich hoffe auf eine Erklärung, warum es nicht so ist.
select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test;
Beispiel dafür, wie die Originaltabelle aussieht, was ich möchte und welche tatsächlichen Drucke:
original wanted what actually prints
-------- ------ ---------------------
value1 value1
NULL NULL
value2 value2
NULL NULL
Wie Sie sehen können, macht es das Gegenteil von dem, was ich will, daher habe ich versucht, IS NULL auf IS NOT NULL zu drehen, und das hat es natürlich nicht behoben. Ich habe auch versucht, die Position von when case zu tauschen, was nicht funktioniert hat.
Bearbeiten: Es scheint, dass die 3 unten angegebenen Lösungen alle die Aufgabe erfüllen. Grüße
select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test
(prereq IS NULL)
sollte nur lesenNULL
Antworten:
Einige dieser integrierten Funktionen sollten funktionieren:
quelle
Wenn Sie wirklich alle Werte einschließlich der NULL-Werte ausgeben müssen:
select IFNULL(prereq,"") from test
quelle
SELECT COALESCE(prereq, '') FROM test
Coalesce gibt das erste Nicht-Null-Argument zurück, das von links nach rechts an Coalesce übergeben wurde. Wenn alle Argumente null sind, wird null zurückgegeben, aber wir erzwingen dort eine leere Zeichenfolge, sodass keine Nullwerte zurückgegeben werden.
Beachten Sie auch, dass der COALESCE- Operator in Standard-SQL unterstützt wird. Dies ist bei IFNULL nicht der Fall . Es ist also eine gute Praxis, erstere zu verwenden. Beachten Sie außerdem, dass COALESCE mehr als zwei Parameter unterstützt und diese durchläuft, bis eine Nicht-Null-Übereinstimmung gefunden wird.
quelle
Versuchen Sie es unten;
select if(prereq IS NULL ," ",prereq ) from test
quelle
select IFNULL(`prereq`,'') as ColumnName FROM test
Diese Abfrage wählt "vorausgesetzte" Werte aus. Wenn einer der Werte null ist, wird eine leere Zeichenfolge angezeigt, wie Sie möchten. Es werden also alle Werte außer den NULL-Werten leer angezeigt
quelle
Die ursprüngliche Form ist nahezu perfekt. Nach CASE müssen Sie lediglich die Voraussetzungen weglassen :
SELECT CASE WHEN prereq IS NULL THEN ' ' ELSE prereq END AS prereq FROM test;
quelle
Versuchen Sie es
COALESCE
. Es gibt den ersten Nicht-NULL-Wert zurück.SELECT COALESCE(`prereq`, ' ') FROM `test`
quelle
Versuchen Sie dies, dies sollte auch diese leeren Zeilen auch loswerden:
SELECT prereq FROM test WHERE prereq IS NOT NULL;
quelle
Ich habe Nullen (NULL als Standardwert) in einem nicht erforderlichen Feld in einer Datenbank. Sie bewirken nicht, dass der Wert "null" auf einer Webseite angezeigt wird. Der Wert "null" wird jedoch beim Erstellen von Daten über ein Webseiten-Eingabeformular festgelegt. Dies lag daran, dass JavaScript beim Übermitteln der Daten über AJAX und jQuery null nahm und es in die Zeichenfolge "null" transkribierte. Stellen Sie sicher, dass dies nicht das Grundproblem ist, da das einfache Ausführen des oben genannten Problems nur eine Hilfe für das eigentliche Problem darstellt. Ich habe auch die obige Lösung IFNULL (...) als Doppelmaß implementiert. Vielen Dank.
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich habe die beste Lösung ohne Änderungsabfrage und auch Unterstützung für die SELECT * -Anweisung erhalten
quelle
UPDATE your_table set your_field="" where your_field is null
quelle