2016-12-02 2 views
1

Ich habe eine Zeichenfolge in einer Tabelle:CHARINDEX und SUBSTRING zwischen zwei Pipes

S-1-5-21-109290937-1013972632-435976164-15678 | l.smith | DOMAIN-UK | 0x95231 | 1

Ich muss die Daten zwischen dem ersten und zweiten | extrahieren .

Also von oben würde nur l.smith zurückgeben. Ich habe verschiedene CHARINDEX und SUBSTRINGS versucht, aber es immer Fehler, ändert sich auch die Länge der Saite, so kann ich nicht die anderen trimmen aus.

Antwort

3

Ich versuchte dies gerade jetzt, hoffen, dass das ist, was Sie suchen,,

DECLARE @VALUE VARCHAR(MAX) = 'S-1-5-21-109290937-1013972632-435976164-15678|l.smith|DOMAIN-UK|0x95231|1'; 
DECLARE @FIRSTINDEX INT = CHARINDEX('|',@VALUE,1); 
SELECT 
SUBSTRING(@VALUE, @FIRSTINDEX+1, CHARINDEX('|',@VALUE,@FIRSTINDEX+1)-CHARINDEX('|',@VALUE,1)-1);