2016-12-02 54 views
1

我有一个表中的字符串之间:CHARINDEX和SUBSTRING两个管道

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

我需要提取第一个和第二个之间的数据| 。

所以从上面它只会返回l.smith。 我已经尝试了各种CHARINDEXSUBSTRINGS但它总是错误的,字符串的长度也改变,所以我不能修剪其他|出。

回答

3

我想这只是现在,希望这是你在找什么,

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);