在sql中获取字符串左侧分隔符的所有字符
问题描述:
以下是我正在运行的查询以获取所有留给@
分隔符的字符的查询。我无法获得正确的结果。分隔符左侧的字符数量未知。在sql中获取字符串左侧分隔符的所有字符
select @class = SUBSTRING('[email protected]', CHARINDEX('@','[email protected]')-2, 8000)
select @class = left('[email protected]',LEN('[email protected]')-CHARINDEX('@','[email protected]'))
请帮
答
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), '')
你想得到25或Class1? – vipin
这是无效的(标准)SQL。你正在使用哪个DBMS? –