Zitat Zitat von Fuerchau Beitrag anzeigen
Dies könnte (mal wieder) ein CCSID-Problem sein, wenn der Job wieder auf CCSID 65535 steht.
Gib mal definiert "varchar(nn) ccsid 273" oder besser noch NVARCHAR zurück, wobei 8K ja schon recht groß sind und sich bei NVarchar verdoppeln.
Das hat leider auch nicht geholfen.

Zitat Zitat von B.Hauser Beitrag anzeigen
Hmmmm, also bei meiner Funktion klappt sowohl das Aufdröseln als auch das einfügen in eine Temporäre Tabelle als auch das wieder zusammensetzen.

Hier ist meine Funktion (vielleicht hilfts ja):
Code:
Create Or Replace Function YourSchema.SplitStringIntoRows
                 (PARSTRING Varchar(1024),
                  PARSEP Varchar(1) Default ';')
   Returns Table(SPLITELEM Varchar(256))
   Language Sql
   Specific YOURSCHEMA.SPLITSTRR
   Not Deterministic
   Modifies Sql Data
   Called On Null Input
   Set Option Commit = *NONE,
              Dbgview = *Source
              
   Begin
      Declare POSSEP    Integer Default 1;
      Declare PrvPosSep Integer Default 0;
   
      Set ParString = Trim(ParString);        
      
   RepLoop: Repeat Set PrvPosSep = Case When PosSep <> 1 
                                     Then PosSep + 1
                                     Else 1 End;
                If Length(Trim(ParString)) = 0 or ParString = ParSep
                   Then Leave RepLoop;
                End If;                        
                Set PosSep = Locate(ParSep, ParString, PrvPosSep);
                If PosSep = 0 
                   Then Pipe(Trim(Substr(ParString, PrvPosSep)));
                        Leave RepLoop;
                Else Pipe(Trim(Substr(ParString, PrvPosSep, PosSep - PrvPosSep)));     
                End If;
         Until PosSep = 0 End Repeat;     
      Return;   
  End;
... und die folgenden Statements können problemlos ausgeführt werden:
Code:
Declare Global Temporary Table mytable
 ( MyId  Integer,
  MyText  VarChar(4096),
  MyElem  VarChar(256));
  
Insert into mytable  
With Data (Id, Text) as (Values(1, 'AB;CD;E;;FG;H'), 
                               (2, 'A; B; C'), 
                               (3, 'XXX;YY;ZZZZZ;AA'), 
                               (4, ('AAA;D;DD;;BB;DD;EE')))  
Select * 
   from Data, 
        Lateral(Select * from Table(SplitStringIntoRows(Text, ';')) x) c
   Where SplitElem like '%A%';

With Data (Id, Text) as (Values(1, 'AB;CD;E;;FG;H'), 
                               (2, 'A; B; C'), 
                               (3, 'XXX;YY;ZZZZZ;AA'), 
                               (4, ('AAA;D;DD;;BB;DD;EE')))  
Select Id, ListAgg(SplitElem, ';') 
   from Data, 
        Lateral(Select * from Table(SplitStringIntoRows(Text, ';')) x) c
   Group By Id;
Birgitta
Mit diesem Split klappt es! Ich versuche noch heraus zu finden,
weshalb meine Function da Probleme bereitet.

Mein Problem ist aber behoben, vielen Dank!