Feldinhalt prüfen/einsehen bei leer

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Feldinhalt prüfen/einsehen bei leer

Beitrag von Manfred »

ich habe folgendes Problem, wenn ich diese Abfrage mache

Code: Alles auswählen

select * from tabelle
where empty(feldname)
bekomme ich ein anderes Ergebnis, als wenn ich das hier tippe

Code: Alles auswählen

select * from tabelle
where feldname = ''
select * from tabelle
where feldname = '                                  '
in beiden Ergebnissen ist aber lauf ARCBrowser entprechendes Feld leer. Was kann da drin stehen und wie erkenne/ermittel und entferne es dann?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Feldinhalt prüfen/einsehen bei leer

Beitrag von nightcrawler »

Manfred,
zunächst gibt es einen Unterschied zwischen DBF und ADT - ADT hat neben leer(empty) auch nicht belegt (isnull). Ein '' wird bis nach hinten mit Leerzeichen aufgefüllt. Immer.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Feldinhalt prüfen/einsehen bei leer

Beitrag von Manfred »

Hi Joachim,
es ist ein ADT Tabelle.
Das mit den Leerzeichen habe nicht ganz verstanden. Welche Konsequenzen hat das?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Feldinhalt prüfen/einsehen bei leer

Beitrag von Marcus Herz »

Code: Alles auswählen

select * from tabelle
where ifnull(feldname,'') = ''
Mit Ifnull() kannst du einen Defaultwert für die Abfrage definieren. Ähnlich Coalesce(), siehe Doku
Entspricht:

Code: Alles auswählen

select * from tabelle
where (feldname IS NULL or feldname = '')
Ein = Vergleich mit einem NULL Wert ist immer false.
Im ARC siehst du nicht, ob ein '' oder NULL drinsteht.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Feldinhalt prüfen/einsehen bei leer

Beitrag von Manfred »

das Blöde ist nur,
ich habe mir ein SQL Script mit Platzhalter geschrieben

Code: Alles auswählen

SELECT * FROm tabelle
where feld = '{#wert#}'
Wenn der Platzhalter gegen einen Wert getauscht wird, dann klappt es, aber wenn ich das Feld nur auf leer abfragen will, dann reicht es nicht den Platzhalter dagegen zu tauschen weil auf = '' reagiert das System nicht. Ich bräuchte aber beide Varianten, weil es mal so und mal so sein kann.
Naja, dann muß ich eben mit 2 verschiedenen Scripten arbeiten
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Feldinhalt prüfen/einsehen bei leer

Beitrag von Marcus Herz »

deswegen IfNull()

Code: Alles auswählen

SELECT * FROm tabelle
where ifnull(feld,'') = '{#wert#}'
Das sollte doch immer gehen wenn es ein String ist (was ja offensichtlich der Fall ist)
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Feldinhalt prüfen/einsehen bei leer

Beitrag von nightcrawler »

Auf jeden Fall würde ich mit Parametern arbeiten ... Stichwort SQL Injection!!!
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten