![]() |
Datenbank: Access / SQL Server • Version: 2005 • Zugriff über: SQL
Stringverkettung mit NULL-Werten
Hallo,
wenn ich 2 Felder mit Strings verknüpfen will und ein Wert NULL ist, ist das gesamte Ergebnis LEER.
Code:
Ich habe es dann mit:
SELECT ( Nachname +', '+ Vorname ) AS name
FROM tAdressen;
Code:
Geht auch nicht.
SELECT ( Nachname +', '+ IIf(IsNull(Vorname),'-',Vorname) ) AS name
FROM tAdressen; Gibts da noch einen Trick? Im Forum usw. habe ich nichts gefunden. Ich brauche es für Access und SQL-Server. |
AW: Stringverkettung mit NULL-Werten
Das scheint nicht so ganz ohne zu sein:
![]() |
AW: Stringverkettung mit NULL-Werten
Ich würde hier keine Zeit mit SQL vergeuten und das einfach und simple auf GUI-Ebene zusammenfassen ...
|
AW: Stringverkettung mit NULL-Werten
Bei access sollte es so gehen:
Code:
Du solltest Dir auch mal evtl. die access SQL-Funktion nz() anschauen.
SELECT Nachname & ", " & Vorname AS name
FROM tAdressen; bei TSQL geht es mit COALESCE. |
AW: Stringverkettung mit NULL-Werten
Im Postgre gibt es eine Funktion COALESCE, welche von den enthaltenen Parametern den ersten zurückgibt, der nicht NULL ist.
SQL-Code:
Sowas gibt es bestimmt auch bei deinem DBMS.
SELECT ( COALESCE(Nachname, '') || ', ' || COALESCE(Vorname, '') ) AS name
FROM tAdressen; |
AW: Stringverkettung mit NULL-Werten
Es geht darum,
dass ich als Auftrag, bestehende Datenbanken mit bestehenden Programmen, auf Vordermann bringen soll. Das Programm bietet die Möglichkeit, die Datenbank per Skript zu pflegen (was schon mal gut ist). Es konnen mehrere 100tsd Datensätze sein. Ich kann also auf GUI-Ebene nichts machen. |
AW: Stringverkettung mit NULL-Werten
Code:
bingt nur das Komma!
SELECT Nachname & ", " & Vorname AS name
FROM tAdressen |
AW: Stringverkettung mit NULL-Werten
mit tsql geht einfach:
Delphi-Quellcode:
SELECT ( ISNULL(Nachname; N'') +', '+ ISNULL(Vorname; N'')) AS name
FROM tAdressen; |
AW: Stringverkettung mit NULL-Werten
Und wenn Nachname und Vorname als Wert NULL haben, dann ist die Ausgabe doch korrekt im Sinne der Daten.
Dann ist auch klar, warum du bei deiner Abfrage gar nichts bekommen hast :roll: (Macht man das gar nicht mehr, dass man sich vorher die Rohdaten anschaut) |
AW: Stringverkettung mit NULL-Werten
Code:
oder
SELECT Nachname & ", " & NZ(Vorname, '--') AS name
FROM tAdressen
Code:
bringt auch kein Ergebnis!
SELECT NZ(Nachname, Nachname) & ", " & NZ(Vorname, '--') AS name
FROM tAdressen |
AW: Stringverkettung mit NULL-Werten
Was bringt das denn?
SQL-Code:
SELECT
Nachname, Vorname, NZ( Nachname, "--" ) & ", " & NZ( Vorname, "--" ) AS name FROM tAdressen |
AW: Stringverkettung mit NULL-Werten
Bezüglich der Accessdatenbank hätte ich da mal 'ne Frage:
Sind die Spalten Nachname und/oder Vorname leer oder Null? Habe eine Datenbank hier, in der einige Felder leer sind, aber die Abfrage
SQL-Code:
kein Ergebnis liefert, aber die Spalte ist in der gesamten Tabelle leer.
select * from program where genre is null
Zumindest bei Access scheint es drei Möglichkeiten zu geben:
Die Spalten genre und lang sind in der gesamten Tabelle leer (in der Anzeige ist kein Wert sichtbar).
SQL-Code:
ergibt eine leere Ergebnismenge.
select '>'&genre &'-'&lang&'<' as Wert from Program where genre is not null and lang is not null
SQL-Code:
ergibt als Ergebnis >-<. Die leeren Spalten enthalten also auch kein Leerzeichen, sondern einen leeren String, sind aber nicht Null.
select '>'&genre &'-'&lang&'<' as Wert from Program where genre is null and lang is null]
Weiß der Geier warum. Nachdem ich die Spalte genre auf Null gesetzt habe
SQL-Code:
funktioniert auch die Abfrage
update program set genre = null where station_id = 3334567
SQL-Code:
und liefertz alle Sätze zur station_id 3334567.
select '>'&genre &'-'&lang&'<' as Wert from Program where genre is null
Diese beiden Abfragen liefern immer ein Ergebnis:
SQL-Code:
select station_id&', '&genre as Wert from program where genre is not null
SQL-Code:
station_id ist in der gesamten Tabelle gefüllt, genre ist teils leer, teils Null.
select station_id&', '&genre as Wert from program where genre is null
Die station_id wird ausgegeben, unabhängig davon, ob genre nun Null, leer oder gefüllt ist. Zumindest in Bezug auf Access müsste es demnach bei Deiner Datenbank noch eine andere Konstellation geben. Wie greifst Du auf die Datenbanken zu? (welche Komponenten?) Tritt der von Dir beschriebene Effekt nur "mittels Delphi" auf oder auch mit den zu den Datenbank gehörenden Oberflächen? |
AW: Stringverkettung mit NULL-Werten
Der Zugriff erfolgt über TADODataSet als auch über die Access-Oberfläche.
|
AW: Stringverkettung mit NULL-Werten
Was wird denn jetzt angezeigt?
Zitat:
|
AW: Stringverkettung mit NULL-Werten
:wall: Ja, so geht's - Danke. :-D 8-):lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz