WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

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 oder eine ähnliche Task ausführt, können Sie sie sowohl aus ESQL-Modulen (für Compute-, Datenbank-, DatabaseInput- und Filter-Knoten) als auch aus Zuordnungsdateien (werden vom Mapping-Knoten verwendet) 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) 
d       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;	
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:20:03


TaskthemaTaskthema | Version 8.0.0.5 | ac20400_