SQL Null Abfrage
Hallo zusammen,
ich versuche eine CSV in meine Datenbank zu importieren. Das klappt auch.
Die CSV hat folgendes Format:
Teilweise steht nicht an jeder Stelle ein Ort in der CSV. Das soll auch so sein.
Bei einer anschließenden SQL Abfrage:
Ich erhalte als Ergebnis alle Einträge. Ich möchte aber gerne nur die Einträge, bei denen ein Ort hinterlegt ist.
Ich denke es liegt an dem NULL.
Was muss ich anpassen, damit das läuft.
Danke für Eure Hilfe!
ich versuche eine CSV in meine Datenbank zu importieren. Das klappt auch.
Die CSV hat folgendes Format:
1;Vorname;Nachname;Ort;
Teilweise steht nicht an jeder Stelle ein Ort in der CSV. Das soll auch so sein.
Bei einer anschließenden SQL Abfrage:
SELECT * FROM `test` WHERE Ort IS NOT NULL
Ich erhalte als Ergebnis alle Einträge. Ich möchte aber gerne nur die Einträge, bei denen ein Ort hinterlegt ist.
Ich denke es liegt an dem NULL.
Was muss ich anpassen, damit das läuft.
Danke für Eure Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 626328
Url: https://administrator.de/forum/sql-null-abfrage-626328.html
Ausgedruckt am: 17.04.2025 um 04:04 Uhr
18 Kommentare
Neuester Kommentar
works for me:
in der DB dann:
natürlich geht aus:
cat /tmp/import.csv
1;Max;Mustermann;
2;Susi;Sorglos;Berlin
3;Hans-Peter;Wurst;Bonn
4;Hans;Meier;
in der DB dann:
test=*# create table newit1 (id int, vorname text, nachname text, ort text);
CREATE TABLE
test=*# copy newit1 from '/tmp/import.csv' csv delimiter ';';
COPY 4
test=*# select * from newit1 where ort is null;
id | vorname | nachname | ort
----+---------+------------+-----
1 | Max | Mustermann |
4 | Hans | Meier |
(2 rows)
natürlich geht aus:
test=*# select * from newit1 where ort is not null;
id | vorname | nachname | ort
----+------------+----------+--------
2 | Susi | Sorglos | Berlin
3 | Hans-Peter | Wurst | Bonn
(2 rows)
Hallo,
dann versuch es mit IS NOT NULL or IS NOT ‘‘ (2 hochkomma)
Gruß
michi
dann versuch es mit IS NOT NULL or IS NOT ‘‘ (2 hochkomma)
Gruß
michi
Zitat von @newit1:
Entsprechend ist die SQL Abfrage nur bei den von Hand eingegebenen Werten erfolgreich.
Wie ändere ich das?
steht doch mehrfach oben Entsprechend ist die SQL Abfrage nur bei den von Hand eingegebenen Werten erfolgreich.
Wie ändere ich das?
Und siehst du's jetzt?
Moin,
du hast die Ursache ja schon in Gänze erklärt bekommen.
Beim Import der CSV wird ein Wert ohne Inhalt importiert. Das ist mehr als ein nichts (=NULL)
Um deine Ergebnisse zu erhalten, gibt es wie immer viele Möglichkeiten.
Einer davon ist ja schon genannt worden, wobei hier ein Fehler enthalten ist, den ich hier korrigiert habe:
Das or ORT is not '' funktioniert nämlich auch nicht
ICH arbeite jedoch gerne mit
NULLIF greift für mySQL sowie für MS SQL
Gruß
em-pie
du hast die Ursache ja schon in Gänze erklärt bekommen.
Beim Import der CSV wird ein Wert ohne Inhalt importiert. Das ist mehr als ein nichts (=NULL)
Um deine Ergebnisse zu erhalten, gibt es wie immer viele Möglichkeiten.
Einer davon ist ja schon genannt worden, wobei hier ein Fehler enthalten ist, den ich hier korrigiert habe:
SELECT *
FROM test
WHERE ort is not null OR ort <> ''
Das or ORT is not '' funktioniert nämlich auch nicht
ICH arbeite jedoch gerne mit
SELECT *
FROM test
WHERE NULLIF(ort, '') is not null
NULLIF greift für mySQL sowie für MS SQL
Gruß
em-pie
@michi1983
Deine Syntax ist ja auch richtig
Oben wurde aber mehrfach
verwendet und das geht nun mal nicht
Deine Syntax ist ja auch richtig
Oben wurde aber mehrfach
[..] or ort IS NOT ''
@newit1
Kein Problem.
Wenn du es sauber haben willst, jagst du nach dem Import ein UPDATE über die Tabelle, dann ist es einheitlich:
Dann ist da auch ein NULL enthalten
Kein Problem.
Wenn du es sauber haben willst, jagst du nach dem Import ein UPDATE über die Tabelle, dann ist es einheitlich:
UPDATE mytable
SET ort = NULL
WHERE NULLIF(ort, '') is not null
Dann ist da auch ein NULL enthalten