Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 r2 CHARINDEX和两个管道之间的子字符串_Sql Server 2008 R2_Substring - Fatal编程技术网

Sql server 2008 r2 CHARINDEX和两个管道之间的子字符串

Sql server 2008 r2 CHARINDEX和两个管道之间的子字符串,sql-server-2008-r2,substring,Sql Server 2008 R2,Substring,我在表中有一个字符串: S-1-5-21-109290937-1013972632-435976164-15678 | l.smith | DOMAIN-UK | 0x95231 | 1 我需要提取第一个和第二个|之间的数据 因此,从上面看,它将只返回l.smith。 我尝试了各种CHARINDEX和子字符串,但总是出错,字符串的长度也会发生变化,因此我无法修剪其他字符串。我刚刚尝试了这个,希望这就是您要找的 DECLARE @VALUE VARCHAR(MAX) = 'S-1-5-21-109

我在表中有一个字符串:

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

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

因此,从上面看,它将只返回l.smith。
我尝试了各种
CHARINDEX
子字符串
,但总是出错,字符串的长度也会发生变化,因此我无法修剪其他字符串。

我刚刚尝试了这个,希望这就是您要找的

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

如果这在第一根管道上起作用,我如何让它在下一根管道上起作用,依此类推?