Reputation: 980
Following are the queries I am running to fetch all the characters which left to the @
delimiter. I am not able to get the proper results. The number of characters to the left of delimiter are unknown.
select @class = SUBSTRING('25@class1', CHARINDEX('@','25@class1')-2, 8000)
select @class = left('25@class1',LEN('25@class1')-CHARINDEX('@','25@class1'))
Please help
Upvotes: 1
Views: 14310
Reputation: 12022
Method 1: (using SUBSTRING
)
DECLARE @class VARCHAR(4000)
SELECT @class = SUBSTRING('25@class1', 1, CHARINDEX('@','25@class1') - 1)
Method 2: (using LEFT
)
DECLARE @class VARCHAR(4000)
SELECT @class = LEFT('25@class1', CHARINDEX('@','25@class1') - 1)
Method 3: (using STUFF
)
DECLARE @class VARCHAR(4000)
SELECT @class = STUFF('25@class1', CHARINDEX('@','25@class1'), (LEN('25@class1') - CHARINDEX('@','25@class1') + 1), '')
Upvotes: 5
Reputation: 2813
I assume you want to display before @
. And also provided logic to find after and before @
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 @
Upvotes: 2
Reputation: 4192
DECLARE @class VARCHAR(100) = '25@class1'
SELECT SUBSTRING(@class,0,CHARINDEX('@',@class)) SELECT LEN(SUBSTRING(@class,0,CHARINDEX('@',@class)))
Upvotes: 0