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;