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

时间:2016-11-11 11:35:08

标签: sql sql-server

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

select @class = SUBSTRING('25@class1', CHARINDEX('@','25@class1')-2, 8000)


select @class = left('25@class1',LEN('25@class1')-CHARINDEX('@','25@class1'))

请帮忙

3 个答案:

答案 0 :(得分:3)

方法1 :(使用SUBSTRING

DECLARE @class VARCHAR(4000)
SELECT @class = SUBSTRING('25@class1', 1, CHARINDEX('@','25@class1') - 1)

方法2 :(使用LEFT

DECLARE @class VARCHAR(4000)
SELECT @class = LEFT('25@class1', CHARINDEX('@','25@class1') - 1)

方法3 :(使用STUFF

DECLARE @class VARCHAR(4000)
SELECT @class = STUFF('25@class1', CHARINDEX('@','25@class1'), (LEN('25@class1') - CHARINDEX('@','25@class1') + 1), '')

答案 1 :(得分:2)

我假设您要在@之前显示。并且还提供了在@

之后和之前查找的逻辑
declare @class varchar(200)
select @class = left('25@class1', CHARINDEX('@','25@class1')-1)

select @class  --before @

select @class = right('25@class1',len('25@class1')- CHARINDEX('@','25@class1'))
select @class -- after @

答案 2 :(得分:0)

DECLARE @class VARCHAR(100) = '25@class1' 

SELECT SUBSTRING(@ class,0,CHARINDEX('@',@ class)) SELECT LEN(SUBSTRING(@ class,0,CHARINDEX('@',@ class)))