Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Problem mit Null (https://www.delphipraxis.net/17302-sql-problem-mit-null.html)

Rolf Rostig 2. Mär 2004 22:28


SQL Problem mit Null
 
Hallo,

ich habe diese Abfrage:

SQL-Code:
select Name ||', ' || Vname || ' ' || Ort as Eintrag, ID from t_adressen
order by Name, Vname
Wenn einer der 3 Felder NULL ist, ist der Datensatz Eintrag auch NULL.
Kann ich das verhindern?
So das der Datensatz mit den vorhandenen Daten, z.B. nur der Name ausgegeben wird.

MarcoWarm 3. Mär 2004 07:25

Re: SQL Problem mit Null
 
Welche Datenbank benutzt Du?

bei Interbase einfach

SQL-Code:
select ltrim(rtrim(NAME))||', '||ltrim(rtrim(VORNAME)) from ADRESSEN
P.S.
UDFs müssen installiert sein

Ciao

Marco

Robert_G 3. Mär 2004 09:39

Re: SQL Problem mit Null
 
In Oracle ist ein null in einem String gleichbedeutend wie ein leeren String ('').
Da deine DB sich da etwas anders verhält, kannst du es ja mal so versuchen:
SQL-Code:
SELECT nvl(Name, '') || ', ' || nvl(Vname, '') || ' ' || nvl(Ort, '') As Eintrag,
       ID
FROM  t_adressen
ORDER By Name,
          Vname
Falls es nvl() bei dir nicht gibt: Es gibt den 2. Parameter aus, wenn der erste NULL ist, sonst den ersten .

Rolf Rostig 3. Mär 2004 10:18

Re: SQL Problem mit Null
 
Hallo,

ich benutze Firebird 1.0
Leider funktionieren die Vorschläge nicht. :cry:

Robert_G 3. Mär 2004 10:39

Re: SQL Problem mit Null
 
Zitat:

Zitat von Robert_G
Falls es nvl() bei dir nicht gibt: Es gibt den 2. Parameter aus, wenn der erste NULL ist, sonst den ersten .

Das war mehr als Hilfe zur Selbsthilfe ( :wink: ) gedacht. Es muss doch auch bei Firebird irgend ein Äquvalent dazu geben.
Vor allem wenn die DB bei NULL-Strings so rumzickt.

MarcoWarm 3. Mär 2004 10:40

Re: SQL Problem mit Null
 
Hast Du überhaupt irgendwelche UDFs installiert?

Rolf Rostig 3. Mär 2004 11:06

Re: SQL Problem mit Null
 
nein, keine UDF´s

MarcoWarm 3. Mär 2004 11:17

Re: SQL Problem mit Null
 
ich weiß nur von Interbase und Firebird 1.5, daß die UDFs im Ordner /udf im Firebird Verzeichnis liegen. Da ist auch gleich das SQL-Script dabei, um die UDFs in der Datenbank zu registrieren.
ib_udf enthält das ltrim() und rtrim()
fbudf enthält snullif() -- wir arbeiten aber nur mit Interbase hier, also kann ich dir letzteres nicht erklären

Ciao

Marco

Rolf Rostig 3. Mär 2004 12:38

Re: SQL Problem mit Null
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mit UDF habe ich bisher noch nicht gearbeitet, jetzt sind sie installiert.
Aber es kommt eine Fehlermeldung s. Anhang.
Ich weiss nicht weiter. :wall:

MarcoWarm 3. Mär 2004 12:41

Re: SQL Problem mit Null
 
Der Client benutzt einen anderen CharacterSet als der Server.

Standard wäre in unseren Breiten : ISO8859_1

Rolf Rostig 3. Mär 2004 13:14

Re: SQL Problem mit Null
 
Hi Marco,

meine DB hat als Zeichensatz ISO8859_1.
Um die Abfrage zu testen benutze ich IBExpert.
Was meinst du mit:
Zitat:

Der Client benutzt einen anderen CharacterSet als der Server.

MarcoWarm 3. Mär 2004 13:18

Re: SQL Problem mit Null
 
Wenn Du Dir im IBExpert in der Felderansicht die Tabelle ansiehst, muß in der Spalte "Zeichensatz" bei deinen Feldern ISO8859_1 stehen. Außerdem muß in der Datenbankregistrierung ebenfalls der gleiche Zeichensatz eingestellt sein. Wenn dass der Fall ist weiß vielleicht noch jemand anders Rat. Vielleicht postest Du mal dein Query und die Tabellenstruktur.

Rolf Rostig 3. Mär 2004 14:11

Re: SQL Problem mit Null
 
Liste der Anhänge anzeigen (Anzahl: 1)
Gerne, Felder s. Anlage

Wenn ich die Abfrage auf einen Datensatz ausführe funktioniert es.

SQL-Code:
SELECT snvl(Name, '') || ', ' || snvl(Vname, '') || ' ' || snvl(Ort, '') As Eintrag
FROM  t_adressen

where id = 22
ORDER By Name, Vname
Ich brauche aber alle Datensätze.

MarcoWarm 3. Mär 2004 14:31

Re: SQL Problem mit Null
 
ich hab leider keine Firebird-Installation - versuchs mal bitte mit rtrim(ltrim()) - wenn das klappt ist es ein interner Fehler von der Routine - oder ein Feld im Datensatz (Name od. Vorname etc.) enthält ein für den Zeichensatz ungültiges Zeichen.

Rolf Rostig 5. Mär 2004 14:10

Re: SQL Problem mit Null
 
Hallo Marco,

leider klappt das mit der Abfrage nicht so wie ich es brauche.
Ich muss mir etwas anderes einfallen lassen.
Aber ich hatte einen Einblick in UDF.
Danke für deine Antworten.

DelphiDeveloper 5. Mär 2004 14:32

Re: SQL Problem mit Null
 
Zitat:

SELECT snvl(Name, '') || ', ' || snvl(Vname, '') || ' ' || snvl(Ort, '') As Eintrag
FROM t_adressen

where id = 22
ORDER By Name, Vname
snvl ?
ist das ne storedproc
wenn ja lass mal sehen

DelphiDeveloper 5. Mär 2004 14:40

Re: SQL Problem mit Null
 
nochmal ein nachtrag zu dem vorschlag von marco um mit den udf's
zu arbeiten

du musst im ibexpert die funtionen die du nutzen willst declarieren:

bspw laeßt du folgenfes script laufen und dann kannst du ltrim nutzen

Code:
DECLARE EXTERNAL FUNCTION LTRIM
    CSTRING(200)
    RETURNS CSTRING(200) FREE_IT
    ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf.dll';

Lemmy 5. Mär 2004 16:02

Re: SQL Problem mit Null
 
Hi,

schau mal auf meiner HP, da gibts ein UDF-Tutorial, in dem beschreibe ich wie man UDF's einsetzt und ganz wichtig: Da gibts dann auch eine BeispielUDF die Strings addieren kann und die auch bei NULL funktioniert....

Grüße und schönes WE
Lemmy


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 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 by Thomas Breitkreuz