# [MSSQL] bestimmte Anzahl Zeichen nach einer bestimmten Zeichenkette



## rrobbyy (16. Oktober 2013)

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;2HZ§"31411111000155,0010,000,00215,0020,0011DEM;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


----------



## Biber3 (17. Oktober 2013)

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


```
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


----------



## rrobbyy (17. Oktober 2013)

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******


----------

