在sql中获取字符串左侧分隔符的所有字符

问题描述:

以下是我正在运行的查询以获取所有留给@分隔符的字符的查询。我无法获得正确的结果。分隔符左侧的字符数量未知。在sql中获取字符串左侧分隔符的所有字符

select @class = SUBSTRING('[email protected]', CHARINDEX('@','[email protected]')-2, 8000) 


select @class = left('[email protected]',LEN('[email protected]')-CHARINDEX('@','[email protected]')) 

请帮

+0

你想得到25或Class1? – vipin

+0

这是无效的(标准)SQL。你正在使用哪个DBMS? –

DECLARE @class VARCHAR(100) = '[email protected]' 

SELECT子(@级,0,CHARINDEX( '@',@类)) SELECT LEN(SUBSTRING(@级,0,CHARINDEX( '@' ,@ class)))

我假设你想在@之前显示。并且还提供了逻辑找到之后和之前@

declare @class varchar(200) 
select @class = left('[email protected]', CHARINDEX('@','[email protected]')-1) 

select @class --before @ 

select @class = right('[email protected]',len('[email protected]')- CHARINDEX('@','[email protected]')) 
select @class -- after @ 

方法1:(使用SUBSTRING

DECLARE @class VARCHAR(4000) 
SELECT @class = SUBSTRING('[email protected]', 1, CHARINDEX('@','[email protected]') - 1) 

方法2:(使用LEFT

DECLARE @class VARCHAR(4000) 
SELECT @class = LEFT('[email protected]', CHARINDEX('@','[email protected]') - 1) 

方法3 :(使用STUFF

DECLARE @class VARCHAR(4000) 
SELECT @class = STUFF('[email protected]', CHARINDEX('@','[email protected]'), (LEN('[email protected]') - CHARINDEX('@','[email protected]') + 1), '')