SQL Null Abfrage
newit1 (Level 1) - Jetzt verbinden
27.11.2020, aktualisiert 12:25 Uhr, 1233 Aufrufe, 18 Kommentare, 2 Danke
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;
Bei einer anschließenden SQL Abfrage:
SELECT * FROM `test` WHERE Ort IS NOT NULL
Ich denke es liegt an dem NULL.
Was muss ich anpassen, damit das läuft.
Danke für Eure Hilfe!
18 Antworten
- LÖSUNG wiesi200 schreibt am 27.11.2020 um 12:33:08 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 12:38:56 Uhr
- LÖSUNG wiesi200 schreibt am 27.11.2020 um 12:45:46 Uhr
- LÖSUNG michi1983 schreibt am 27.11.2020 um 12:48:09 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 12:38:56 Uhr
- LÖSUNG akretschmer schreibt am 27.11.2020 um 12:44:48 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 13:24:04 Uhr
- LÖSUNG michi1983 schreibt am 27.11.2020 um 13:29:48 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 13:39:35 Uhr
- LÖSUNG wiesi200 schreibt am 27.11.2020 um 13:47:53 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 14:27:34 Uhr
- LÖSUNG michi1983 schreibt am 27.11.2020 um 14:32:54 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 14:40:21 Uhr
- LÖSUNG michi1983 schreibt am 27.11.2020 um 14:32:54 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 14:27:34 Uhr
- LÖSUNG wiesi200 schreibt am 27.11.2020 um 13:47:53 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 13:39:35 Uhr
- LÖSUNG michi1983 schreibt am 27.11.2020 um 13:29:48 Uhr
- LÖSUNG em-pie schreibt am 27.11.2020 um 14:53:46 Uhr
- LÖSUNG michi1983 schreibt am 27.11.2020 um 15:00:17 Uhr
- LÖSUNG em-pie schreibt am 27.11.2020 um 15:04:10 Uhr
- LÖSUNG michi1983 schreibt am 27.11.2020 um 15:05:03 Uhr
- LÖSUNG em-pie schreibt am 27.11.2020 um 15:04:10 Uhr
- LÖSUNG newit1 schreibt am 27.11.2020 um 15:01:43 Uhr
- LÖSUNG em-pie schreibt am 27.11.2020 um 15:09:03 Uhr
- LÖSUNG michi1983 schreibt am 27.11.2020 um 15:00:17 Uhr
LÖSUNG 27.11.2020 um 12:33 Uhr
LÖSUNG 27.11.2020, aktualisiert um 12:48 Uhr
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)
test=*# select * from newit1 where ort is not null;
id | vorname | nachname | ort
----+------------+----------+--------
2 | Susi | Sorglos | Berlin
3 | Hans-Peter | Wurst | Bonn
(2 rows)
LÖSUNG 27.11.2020, aktualisiert um 12:49 Uhr
LÖSUNG 27.11.2020, aktualisiert um 13:25 Uhr
Danke für Eure Hilfe!!
Gebe ich die Daten von Hand ein und mache bei Ort keine Eingabe ersetzt das Programm mit "NULL"
Lade ich die Daten mittels CSV hoch, schreibt das Programm kein "NULL" in die leeren Felder...
Entsprechend ist die SQL Abfrage nur bei den von Hand eingegebenen Werten erfolgreich.
Wie ändere ich das?
Gebe ich die Daten von Hand ein und mache bei Ort keine Eingabe ersetzt das Programm mit "NULL"
Lade ich die Daten mittels CSV hoch, schreibt das Programm kein "NULL" in die leeren Felder...
Entsprechend ist die SQL Abfrage nur bei den von Hand eingegebenen Werten erfolgreich.
Wie ändere ich das?
LÖSUNG 27.11.2020, aktualisiert um 13:30 Uhr
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?
LÖSUNG 27.11.2020 um 13:47 Uhr
LÖSUNG 27.11.2020 um 14:27 Uhr
LÖSUNG 27.11.2020 um 14:32 Uhr
LÖSUNG 27.11.2020 um 14:40 Uhr
LÖSUNG 27.11.2020, aktualisiert um 14:55 Uhr
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 <> ''
ICH arbeite jedoch gerne mit
SELECT *
FROM test
WHERE NULLIF(ort, '') is not null
Gruß
em-pie
LÖSUNG 27.11.2020 um 15:00 Uhr
LÖSUNG 27.11.2020 um 15:01 Uhr
LÖSUNG 27.11.2020, aktualisiert um 15:04 Uhr
@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 ''
LÖSUNG 27.11.2020 um 15:09 Uhr
@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