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.

Unicode-Zeichenfolgefunktionen in DB2

Bei Verwendung von Zeichenfolgefunktionen in ESQL-Ausdrücken verweisen bestimmte Parameter auf Zeichenpositionen oder Zähler.

Beispielsweise führt die folgende Codierung mit der Funktion SUBSTRING:
  SUBSTRING('Hello World!' FROM 7 FOR 4)
zur Ausgabe der Zeichenfolge Worl, weil sich 7 auf die siebte Zeichenposition bezieht und 4 auf die Zeichenanzahl.

Wird die Zeichenfolge Hello World! in einer ASCII-Codepage dargestellt, entspricht das siebte Byte in dieser Darstellung dem siebten Zeichen. In anderen Codepages oder Codeumsetzungsschemas (z. B. in einigen Unicode-Darstellungen) beginnt das siebte Zeichen möglicherweise bei Byte 13 und vier Zeichen können in Wirklichkeit 8 Bytes belegen.

WebSphere Message Broker handhabt diese Situation richtig, d. h., die numerischen Parameter und Ergebnisse dieser Zeichenfolgefunktionen beziehen sich immer auf Zeichen und nicht auf die Bytes, die zu deren Darstellung verwendet werden.

In bestimmten Fällen delegiert WebSphere Message Broker Ausdrücke zur Verarbeitung an eine Datenbanksteuerkomponente. Wenn beispielsweise eine WHERE-Klausel in einer SELECT-Funktion auf eine Datenbankdatenquelle angewendet wird, wird die WHERE-Klausel an die Datenbank übergeben, sofern diese alle Funktionen in dem Ausdruck interpretieren kann.

Im Falle von Funktionen, die nicht von der Datenbank unterstützt werden, übergibt WebSphere Message Broker nur die Teile des Ausdrucks, die interpretiert werden können, ruft einen ungefilterten Datensatz ab und führt die übrige Filterung selbst durch.

DB2-Zeichenfolgefunktionen verwenden Byte-Indexierung und keine Zeichen-Indexierung. Dies bedeutet, dass sich bei Unicode-Daten die Bedeutung bestimmter Funktionen von der Bedeutung der WebSphere Message Broker-Funktionen unterscheidet, auch wenn sie 'interpretiert' werden können.

Zeichen in Unicode UTF8-Darstellung können beispielsweise ein bis vier Bytes belegen, so dass das siebte Zeichen irgendwo zwischen Byte 7 und Byte 25 beginnen kann.

Folgende Zeichenfolgefunktionen sind betroffen:
  • INSERT-Funktion
  • LEFT-Funktion
  • LENGTH-Funktion
  • OVERLAY-Funktion
  • POSITION-Funktion
  • RIGHT-Funktion
  • SPACE-Funktion
  • SUBSTRING-Funktion

Diese Funktionen verarbeiten entweder numerische Parameter oder geben numerische Ergebnisse zurück, die sich auf Indizes oder Zähler von Zeichen in Zeichenfolgen beziehen.

Wenn Ausdrücke mit diesen Funktionen an die DB2-Datenbank übergeben und Unicode-Zeichenfolgedaten in der Datenbank bearbeitet werden, kann dies zu unerwarteten Ergebnissen oder sogar zu einem Fehler führen.

Dieser Fehler kann auch auftreten, wenn z. B. ein Ausdruck dieses Typs mit der Funktion PASSTHRU direkt an die Datenbank übergeben wird. In diesem Fall können Sie jeden Ausdruck selbst nach Bedarf ändern, um ihn an die Zieldatenbank anzupassen.

Es ist nicht möglich, Ausdrücke systematisch zu ändern, um dieses Problem zu vermeiden; dies wird von WebSphere Message Broker auch nicht versucht.

Wenn die Unicode-Zeichenfolgen keine Zeichen enthalten, die in der UTF8-Darstellung jeweils mehr als ein Byte belegen, werden die Funktionen ordnungsgemäß ausgeführt.

Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

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

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:19:48


ReferenzthemaReferenzthema | Version 8.0.0.5 | ac00415_