it-swarm.com.de

MySQL-Abfrage Ersetzen Sie NULL durch eine leere Zeichenfolge in Select

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 Ausdrucke es gibt:

original     wanted      what actually prints
--------     ------      ---------------------
value1       value1      
NULL                     NULL
value2       value2      
NULL                     NULL

Wie Sie sehen, macht es das Gegenteil von dem, was ich will, und daher habe ich versucht, die IS NULL zu IS NOT NULL umzudrehen, und das hat es natürlich nicht behoben. 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
55
user1188835

Einige dieser eingebauten Funktionen sollten funktionieren:

Coalesce
Is Null
IfNull
4
user1284846

Wenn Sie wirklich alle Werte einschließlich der NULL-Werte ausgeben müssen:

select IFNULL(prereq,"") from test
102
JScoobyCed
SELECT COALESCE(prereq, '') FROM test

Coalesce gibt das erste Nicht-Null-Argument von links nach rechts zurück. 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 Operator COALESCE in Standard-SQL unterstützt wird. Dies ist nicht der Fall bei IFNULL . So ist es eine gute Praxis, die ersteren zu verwenden. Beachten Sie außerdem, dass COALESCE mehr als 2 Parameter unterstützt und diese durchläuft, bis eine Nicht-Null-Übereinstimmung gefunden wird.

72
Mosty Mostacho

Versuchen Sie es unten;

  select if(prereq IS NULL ," ",prereq ) from test
14
user319198

Die ursprüngliche Form ist fast perfekt, Sie müssen nur vorausgehende nach [~ # ~] case [~ # ~] :

SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;
3
M.Nemes

Versuchen Sie COALESCE . Es gibt den ersten Nicht-NULL-Wert zurück.

SELECT COALESCE(`prereq`, ' ') FROM `test`
2
SenorAmor

Versuchen Sie dies, dies sollte auch diese leeren Zeilen loswerden:

SELECT prereq FROM test WHERE prereq IS NOT NULL;
0
Hunter McMillen
select IFNULL(`prereq`,'') as ColumnName FROM test

diese Abfrage wählt "Voraussetzungs" -Werte aus und wenn einer der Werte null ist, wird eine leere Zeichenfolge angezeigt, wie Sie möchten. Daher werden alle Werte außer den NULL-Werten leer angezeigt

0
Abderrahmane