在SQL
答
被应用于列操作:
use [your_db_name];
go
create table dbo.test
(
string varchar(max) null
)
insert into dbo.test values ('[email protected]')
select
string,
substring(
string,
charindex('@', string, 0) + 1,
charindex('.', string, charindex('@', string, 0)) - charindex('@', string, 0) - 1
) as you_need
from dbo.test
答
字符串操作在SQL Server中是如此的痛苦。下面是一个方法:
select t.*,
left(en.emailname, charindex('.', en.emailname + '.') - 1)
from t outer apply
(select stuff(email, 1, charindex('@', email + '@'), '') as emailname) en;
也就是说,在charindex()
呼叫,所搜索的被放置在字符串的末尾的字符。这使代码甚至可以处理格式错误的电子邮件 - 当电子邮件的格式不是'%@%.%'
时,它会返回一个空字符串。
答
DECLARE @str varchar(50) = '[email protected]';
SELECT LEFT(
RIGHT(@str, LEN(@str) - CHARINDEX('@', @str))
,CHARINDEX('.', RIGHT(@str, LEN(@str) - CHARINDEX('@', @str))
) - 1) AS OUTPUT
上面的查询只给出了来自Email的域名。该查询可以在表
答
DECLARE @col炭(200) 组@col = '[email protected]'
SELECT SUBSTRING(@col,LEN(LEFT(@col,CHARINDEX('@',@col)))+ 1,LEN(@col) - LEN(LEFT(@col,CHARINDEX('@',@col))) - LEN(RIGHT(@col,LEN(@col) - CHARINDEX('。',@col))) - 4);
答
DECLARE @myStr varchar(100) = '[email protected]'
SELECT
SUBSTRING(SUBSTRING(@myStr,CHARINDEX('@',@myStr)+1,LEN(@myStr)-CHARINDEX('@',@myStr)+1),0,CHARINDEX('.',SUBSTRING(@myStr,CHARINDEX('@',@myStr)+1,LEN(@myStr)-CHARINDEX('@',@myStr)+1)))
这可能是有用的,但我真的建议你在C#/ Visaul基础上建立用户定义的函数,他们可以更快地这样做。
答
试试这个: -
DECLARE @Text varchar(100)
SET @Text = '[email protected]'
SELECT SUBSTRING(STUFF(@Text, 1, CHARINDEX('@',@Text), ''), 0,
CHARINDEX('.', STUFF(@Text, 1, CHARINDEX('@',@Text), '')))
结果: -
email
答
使用CHARINDEX,LEN和反向搜索的@
的位置和最后一个点。
和substring基于这些位置来获取名称:
create table test (id int identity(1,1), email varchar(60));
insert into test (email) values
('[email protected]'),
('not an email'),
('@invalid.email.xxx'),
('[email protected]');
select *,
(case
when email like '[a-z]%@%.%'
then substring(email,
charindex('@',email)+1,
len(email) - charindex('@',email) - charindex('.',reverse(email))
)
end) as email_domain_without_extension
from test;
当使用返回NULL时,它不是一个电子邮件(而不是一个空字符串)的情况下。
看看CHARINDEX()和SUBSTRING() – etsa
相关:http://*.com/questions/20984617/how-to-get-string-between-two-characters – DenStudent
类似的问答可以在这里找到[这里] (http://*.com/a/40425080/7812927)。
希望这有助于。 – BigMacMenu