Teilfeld aus einem größeren Feld auswählen

Möglicherweise verarbeitet Ihr Nachrichtenfluss eine Nachricht, die Teilfelder mit Begrenzern enthält. Sie können ESQL so codieren, dass ein Teilfeld aus dem Umgebungsinhalt extrahiert wird, wenn Sie die Begrenzer des Teilfelds kennen.

Wenn Sie eine Funktion erstellen, die diese Aufgabe oder eine ähnliche ausführt, können Sie sie sowohl in den ESQL-Modulen (für Rechen-, Datenbank- und Filterknoten) als auch in Zuordnungsdateien (verwendet von Datenlösch-, Dateneinfügungs-, Datenaktualisierungs-, Extraktions-, Zuordnungs- und Warehouse-Knoten) aufrufen.

Die nachfolgende Beispielfunktion extrahiert ein bestimmtes Teilfeld einer Nachricht, das durch ein bestimmtes Zeichen begrenzt ist.

CREATE FUNCTION SelectSubField (SourceString CHAR, Delimiter CHAR, TargetStringPosition INT) 
RETURNS CHAR
-- Diese Funktion gibt eine Unterzeichenfolge an Parameterposition 'TargetStringPosition' im
-- übergebenen Parameter 'SourceString' zurück.  Hier ein mögliches Verwendungsbeispiel:
-- SelectSubField(MeinQuellfeld,' ',2) wählt das zweite Teilfeld aus dem
-- Feld 'MeinQuellfeld' mit einem Leerzeichen als Begrenzer.  Wenn 'MeinQuellfeld' den Wert
-- "Erstes Zweites Drittes" hat, gibt die Funktion den Wert "Zweites" zurück.
               BEGIN
    DECLARE DelimiterPosition INT;
    DECLARE CurrentFieldPosition INT 1;
    DECLARE StartNewString INT 1;
    DECLARE WorkingSource CHAR SourceString;
    SET DelimiterPosition = POSITION(Delimiter IN SourceString);
    WHILE CurrentFieldPosition < TargetStringPosition
     	DO
     		IF DelimiterPosition = 0  THEN
   			-- DelimiterPosition ist 0, wenn der Begrenzer nicht gefunden wurde
         -- Schleife verlassen
     			SET CurrentFieldPosition = TargetStringPosition;
     		ELSE
     			SET StartNewString = DelimiterPosition + 1;
     			SET WorkingSource = SUBSTRING(WorkingSource FROM StartNewString);
     			SET DelimiterPosition = POSITION(Delimiter IN WorkingSource);
     			SET CurrentFieldPosition = CurrentFieldPosition + 1;
     		END IF;
    END WHILE;    IF DelimiterPosition > 0 THEN
       -- Alles, was hinter dem Begrenzer steht, aus der Zeichenfolge entfernen
       SET WorkingSource = SUBSTRING(WorkingSource FROM 1 FOR DelimiterPosition);     	
       SET WorkingSource = TRIM(TRAILING Delimiter FROM WorkingSource);
    		END IF;
    RETURN WorkingSource;
END;	
Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Zugehörige Tasks
Einen Nachrichtenfluss entwerfen
Nachrichtenflussinhalte definieren
Zugehörige Verweise
Rechenknoten (Compute)
Datenbankknoten (Database)
Filterknoten
ESQL-Referenz
DECLARE-Anweisung
POSITION-Funktion
SET-Anweisung
SUBSTRING-Funktion
TRIM-Funktion
WHILE-Anweisung
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac20400_