从左边出现第二个特定字符后删除字符串

Muf*_*lix 10 sql-server

我在表列中有这种类型的值

154646@8@486
45465@6464@654
Run Code Online (Sandbox Code Playgroud)

等等。

如何在第二个@ 字符后删除所有内容?我需要显示

154646@8
45465@6464
Run Code Online (Sandbox Code Playgroud)

我只能为所有@ 做,但不能为第二个做

SELECT REPLACE(LEFT('45@Tra@lala', CHARINDEX('@','45@Tra@lala')-1),'_',' ')
Run Code Online (Sandbox Code Playgroud)

返回45但不返回45@Tra

谢谢 :-)

Mik*_*son 16

您可以使用第三个参数charindex()来指定搜索将在字符串中的哪个位置开始。

declare @S varchar(20) = '45465@6464@654';
select left(@S, charindex('@', @S, charindex('@', @S)+1)-1);
Run Code Online (Sandbox Code Playgroud)

结果

45465@6464
Run Code Online (Sandbox Code Playgroud)