-
XML SQL - Tag nur zeigen wenn gefüllt
Guten Abend zusammen,
momentan versuche ich aus einer Tabelle per embedded SQL eine XML-Datei zu erzeugen.
Das funktioniert bisher auch wunderbar, jedoch möchte ich nun vermeiden, dass Werte die mit 0 bzw ' ' gefüllt sind, angezeigt werden. Gibt es da ein Schlüsselwort?
Habe es bereits mit CASE versucht, bekomme aber keine anständige Syntax zusammen.
Meine XML erzeuge ich bisher ungefähr so:
Code:
exec sql select xmldocument(
xmlelement(NAME "Data",
xmlnamespaces(
'www.example.com/1' AS "xsi"),
xmlelement(NAME "Company", digits(max(COMPANY))),
xmlelement(NAME "Store", max(STORE)),
xmlelement(NAME "Date", max(:val_dat_xml)),
xmlgroup(
trim(ID) as "Id",
COUNT as "Counted",
case when Substr(Trim(char(NUMBER)), 1, 1) = ','
then '0.00' else Trim(Replace(char(NUMBER), ',', '.')) end
as "Number",
order by ID asc
option row "TEST" root "TestList")))
into :myxml
from Data where ID <> ' '
Konkret möchte ich also nun "Counted" nur ausgeben, wenn COUNT > 0 ist.
-
Das dürfte nicht gehen da du ja per Bedingung eine ganze Spalte weglassen willst.
Aber wen stört es eigentlich?
Das ist doch nur Schönheit.
-
Dankeschön für die Antwort!
Ja, Ich fand das auch überflüssig,
doch leider ist das die Anforderung.
Im schlimmsten Fall muss ich wohl die XML nachträglich
durchsuchen und entsprechende Stellen raus filtern.
-
So sollte es funktionieren:
Code:
exec sql select xmldocument(
xmlelement(NAME "Data",
xmlnamespaces(
'www.example.com/1' AS "xsi"),
xmlelement(NAME "Company", digits(max(COMPANY))),
xmlelement(NAME "Store", max(STORE)),
xmlelement(NAME "Date", max(:val_dat_xml)),
xmlgroup(
trim(ID) as "Id",
Case When COUNT > 0 Then COUNT Else NULL End as "Counted",
case when Substr(Trim(char(NUMBER)), 1, 1) = ','
then '0.00' else Trim(Replace(char(NUMBER), ',', '.')) end
as "Number",
order by ID asc
option row "TEST" root "TestList")))
into :myxml
from Data where ID <> ' '
Birgitta
-
Genial, das hat funktioniert!
bei meinen Versuchen fehlte mir das "Else NULL",
da ich dachte "ansonsten mach nichts".
Vielen Dank
-
Das ist ja eine leere Spalte, ich hatte verstanden, dass dann diese Spalte im XML gar nicht ausgegeben wird.
Aber was soll diese Abfrage, geht da nicht "Number = 0"?
Substr(Trim(char(NUMBER)), 1, 1) = ','
-
Die Spalte bzw. das XML-Element wird ja auch nicht im XML ausgegeben wenn der Wert 0 (oder kleiner ist).
Probier's aus!
Birgitta
-
Aber was soll diese Abfrage, geht da nicht "Number = 0"?
Substr(Trim(char(NUMBER)), 1, 1) = ','
Stimmt!
Da hab ich das Problem wohl rückwärts angegangen und das einfachste übersehen,
Danke
Similar Threads
-
By TimH. in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 28-10-14, 09:42
-
By post in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 28-04-14, 10:39
-
By harkne in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 19-11-13, 10:02
-
By heynem in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 27-03-03, 12:14
-
By Kirsten Steer in forum Archiv NEWSboard Events
Antworten: 0
Letzter Beitrag: 24-05-02, 12:20
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks