-
Also letztendlich geht es darum
Ein String hat 1000 Zeichen. Jede Zeile dort ist mit ## getrennt. Also z.B. Zeile1##Zeile2##mehr Text##usw##
Dieser String muss aufgeteilt werden in einzelne Felder. Die Datenbank hat maximal 18 Einzelfelder dafür.
Das 2 ist ein String der hat auch ebenfalls 1000 Zeichen. Der muss aufgeteilt werden in einzelne Felder immer wenn eines der folgenden Zeichen vorkommt ,.; oder blank
Alles muss über SQL gemacht werden. Leider habe ich es nicht ohne Schleife hinbekommen. Deshalb dachte ich mir, eine Funktion der ich einen 1000 stelligen String mitgebe und die mir ein Array mit de einzelnen Werten zurück gibt
ich könnte natürlich auch einen langen String zurück geben mit fixer Länge für ein Element. Aber ich dachte nicht, dass arrays kompliziert sind
-
Wo ist das Problem?
Verwende dazu die Tablefunction Split:
https://www.ibm.com/docs/en/i/7.5?to...table-function
select table(systools.split(charfeld, '##'))
from mytable
Ich habe z.B. auch das Problem, dass für Bildschirmauswahlen Multiselect-Listen angeboten werden sollen. Der User kreuzt nun mehrere Elemente an und ich bekomme eine Kommaseparierte Liste zurück.
Diese verwende ich dann z.B. in der Where-Klausel:
where name in (select * from table(systools.split(: Param, ','))
Funktioniert hervorragend.
Das Gegenstück dazu ist die Funktion LISTAGG, mit der man mehrere Zeilen wieder in einen String packen kann.
Nachtrag:
Deine 18 Felder kannst du ja auch u.U. per concat erst zusammen führen:
F1 concat '##' concat F2 .....
Wenn du leere Felder ausschließen willst:
concat case Fx when '' then '' else '##' concat Fx end
-
Hat super funktioniert, vielen Dank.
Aber das funktioniert nur mit einem Trennzeichen oder gibts da auch was wo man mehrere Trennzeichen angeben kann. Also Zeile trennen bei ,.; oder blank
-
... nur mit Common Table Expressions oder mehreren Sub-Selects und mehreren SPLIT()s
... die UDTF SPLIT() steht in der Bibliothek SYSTOOLS.
Die SQL Codes für alle SQL Routinen in SYSTOOLS können mit Generate SQL ermittelt werden.
Die Funktionen in SYSTOOLS sind (u.a.) als Beispiele gedacht und es wird sogar empfohlen sich auf der Basis dieser Source Codes seine eigenen Funktionen zu schreiben.
Also schau's Dir an, ob Du Dir eine neue Funktion, die Deinen Anforderungen entspricht schreiben kannst.
-
 Zitat von B.Hauser
... nur mit Common Table Expressions oder mehreren Sub-Selects und mehreren SPLIT()s
... die UDTF SPLIT() steht in der Bibliothek SYSTOOLS.
Die SQL Codes für alle SQL Routinen in SYSTOOLS können mit Generate SQL ermittelt werden.
Die Funktionen in SYSTOOLS sind (u.a.) als Beispiele gedacht und es wird sogar empfohlen sich auf der Basis dieser Source Codes seine eigenen Funktionen zu schreiben.
Also schau's Dir an, ob Du Dir eine neue Funktion, die Deinen Anforderungen entspricht schreiben kannst.
Das verstehe ich nicht. Wo sind die Quellcodes und wo gibt es Beispiele dafür. Was ist generate sql
Ah ich verstehe was du meinst. Das SQL generieren lassen von einer Funktion aus der Bibliothek SYSTOOLS und gegebenenfalls anpassen in einer eigenen Funktion
-
-
Ggf. ja, da der Separator ein langes varchar Feld ist, könnte die Angabe von '#,.;' möglicherweise funktionieren da laut Doku nur 1 Zeichen als Separator verwendet wird. '##' bringt da wohl nicht den gedachten Effekt, was du ggf. an Hand von Leerzeilen feststellen kannst.
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 25-05-23, 19:04
-
By harkne in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 16-06-20, 10:45
-
By KM in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 09-02-17, 10:39
-
By harkne in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 04-01-06, 16:44
-
By Atomik in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 26-10-01, 14:07
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