[MSSQL] bestimmte Anzahl Zeichen nach einer bestimmten Zeichenkette

rrobbyy

Mitglied
Hallo zusammen,

eine Anwendung schreibt Anwendungsparameter in eine Tabelle, aber nur in einem Feld. Alle Parameter sind durch ; getrennt, wobei auch nicht druckbare Zeichen (ASCII SOH) als Gruppenparameter trennen.

Mein Ziel ist es exakt 8 Zeichen nach einer bestimmten Zeichenkette zu extrahieren.

Beispielinhalt des Feldes:

0;2013-01-01-00.00.00.000000;2013-10-08-00.00.00.000000;41;13;1;0;1;1;2HZ§"31411111000155,0010,000,00215,0020,0011DEM;DM;*USD;USD;1,303700*NOK;NOK;7,890000*GBP;GBP;0,853500*SGD;SGD;1,694100

Ich möchte jetzt nach der Zeichenkette ;*USD;USD; den Wert 1,303700 extrahieren.

hat jemand eine Idee? Eine Abfrage mit fester Länge geht nicht, da sich der abzufragende Text nicht immer an der gleichen Stelle ist, je nach Parametern.

Danke vorab und Gruß
Robert
 
Moin rrobbyy,

unter MSSQL solltest du bei deiner Anforderung mit CHARINDEX() oder PATINDEX() weiterkommen.

Wenn gewährleistet ist, dass jeder Datensatz den String "USD;USD;" enthält und der darauffolgende String "immer" 8 Zeichen lang ist, dann

SQL:
SELECT Substr( einKessellBuntes, CHARINDEX('USD;USD;', einKesselBuntes) + 8, 8) 
            as Wexelkurs
            FROM DeineTabelle;

Die beiden "Konstanten" mit dem Wert 8 sind einmal 8 für die Länge des Strings "USD;USD;" und einmal 8 für die Länge des numerischen Werts "immer" mit einer Vorkommastelle und 6 Nachkommastellen.

Das Statement sollte zum Testen so reichen - ob es in dieser Form robust genug ist, um unbeaufsichtigt zu laufen, hängt von der individuellen Risikobereitschaft ab.

Ein bisschen sehr optimistisch sind die Annahmen schon.

Grüße
Biber
 
Aufgrund der Tatsache, dass es in dieser Tabelle maximale 3 bis 4 Zeilen vorkommen, welche die Anzahl der Mandaten spiegeln und ich nur einen Mandanten bearbeiten brauche, kann auf den ersten Blick nicht so viel schief gehen. Im Parameter-String kann es den Suchstring nur einmal geben.

Kurzum, das Script funktioniert süperb, und dafür ein dickes Danke******
 

Neue Beiträge

Zurück