![]() |
SQL Problem mit Null
Hallo,
ich habe diese Abfrage:
SQL-Code:
Wenn einer der 3 Felder NULL ist, ist der Datensatz Eintrag auch NULL.
select Name ||', ' || Vname || ' ' || Ort as Eintrag, ID from t_adressen
order by Name, Vname Kann ich das verhindern? So das der Datensatz mit den vorhandenen Daten, z.B. nur der Name ausgegeben wird. |
Re: SQL Problem mit Null
Welche Datenbank benutzt Du?
bei Interbase einfach
SQL-Code:
P.S.
select ltrim(rtrim(NAME))||', '||ltrim(rtrim(VORNAME)) from ADRESSEN
UDFs müssen installiert sein Ciao Marco |
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:
Falls es nvl() bei dir nicht gibt: Es gibt den 2. Parameter aus, wenn der erste NULL ist, sonst den ersten .
SELECT nvl(Name, '') || ', ' || nvl(Vname, '') || ' ' || nvl(Ort, '') As Eintrag,
ID FROM t_adressen ORDER By Name, Vname |
Re: SQL Problem mit Null
Hallo,
ich benutze Firebird 1.0 Leider funktionieren die Vorschläge nicht. :cry: |
Re: SQL Problem mit Null
Zitat:
Vor allem wenn die DB bei NULL-Strings so rumzickt. |
Re: SQL Problem mit Null
Hast Du überhaupt irgendwelche UDFs installiert?
|
Re: SQL Problem mit Null
nein, keine UDF´s
|
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 |
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: |
Re: SQL Problem mit Null
Der Client benutzt einen anderen CharacterSet als der Server.
Standard wäre in unseren Breiten : ISO8859_1 |
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:
|
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.
|
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:
Ich brauche aber alle Datensätze.
SELECT snvl(Name, '') || ', ' || snvl(Vname, '') || ' ' || snvl(Ort, '') As Eintrag
FROM t_adressen where id = 22 ORDER By Name, Vname |
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.
|
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. |
Re: SQL Problem mit Null
Zitat:
ist das ne storedproc wenn ja lass mal sehen |
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'; |
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 20:38 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