Sql 拆分和合并字符串
我正在尝试从全名生成电子邮件。以下是我所拥有的,我被困在这里Sql 拆分和合并字符串,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在尝试从全名生成电子邮件。以下是我所拥有的,我被困在这里 select distinct tbin.Name ,(SELECT SUBSTRING(tbin.Name, 1, CHARINDEX(' ', tbin.Name) - 1) AS [FirstName]) ,(select SUBSTRING(tbin.Name, CHARINDEX(' ', tbin.Name) + 1, 8000) AS LastName) from tblInitialApplicants tbin
select distinct tbin.Name
,(SELECT SUBSTRING(tbin.Name, 1, CHARINDEX(' ', tbin.Name) - 1) AS [FirstName])
,(select SUBSTRING(tbin.Name, CHARINDEX(' ', tbin.Name) + 1, 8000) AS LastName)
from tblInitialApplicants tbin
名字就像“娜塔莉·玛丽娜·贝利”。名称可以是任意长度,并且名称的每个部分之间可以有任意数量的空格
预期结果:娜塔莉。B@gmail.com
“娜塔莉”——名字
“B”-姓氏的第一个字母您可以使用CHARINDEX获取字符的位置,查找第一个空格,反转de name并查找最后一个。有了它,您可以轻松地将名字和姓氏作为子字符串
DECLARE @Fullname VARCHAR(100) = 'Natalie Marine Baily';
select
*,
firstname+'.'+lastnameINITIAL+'@gamil.com'
from (
select
@Fullname Fullname,
SUBSTRING(@Fullname,1,CHARINDEX(' ',@Fullname,1)) firstname,
SUBSTRING(SUBSTRING(@Fullname,LEN(@Fullname)-CHARINDEX(' ',REVERSE(@Fullname),1)+2,CHARINDEX(' ',REVERSE(@Fullname),1)),1,1) lastnameINITIAL
) T
您可以使用CHARINDEX获取字符的位置,查找第一个空格,反转de name并查找最后一个。有了它,您可以轻松地将名字和姓氏作为子字符串
DECLARE @Fullname VARCHAR(100) = 'Natalie Marine Baily';
select
*,
firstname+'.'+lastnameINITIAL+'@gamil.com'
from (
select
@Fullname Fullname,
SUBSTRING(@Fullname,1,CHARINDEX(' ',@Fullname,1)) firstname,
SUBSTRING(SUBSTRING(@Fullname,LEN(@Fullname)-CHARINDEX(' ',REVERSE(@Fullname),1)+2,CHARINDEX(' ',REVERSE(@Fullname),1)),1,1) lastnameINITIAL
) T
您可以使用CHARINDEX获取字符的位置,查找第一个空格,反转de name并查找最后一个。有了它,您可以轻松地将名字和姓氏作为子字符串
DECLARE @Fullname VARCHAR(100) = 'Natalie Marine Baily';
select
*,
firstname+'.'+lastnameINITIAL+'@gamil.com'
from (
select
@Fullname Fullname,
SUBSTRING(@Fullname,1,CHARINDEX(' ',@Fullname,1)) firstname,
SUBSTRING(SUBSTRING(@Fullname,LEN(@Fullname)-CHARINDEX(' ',REVERSE(@Fullname),1)+2,CHARINDEX(' ',REVERSE(@Fullname),1)),1,1) lastnameINITIAL
) T
您可以使用CHARINDEX获取字符的位置,查找第一个空格,反转de name并查找最后一个。有了它,您可以轻松地将名字和姓氏作为子字符串
DECLARE @Fullname VARCHAR(100) = 'Natalie Marine Baily';
select
*,
firstname+'.'+lastnameINITIAL+'@gamil.com'
from (
select
@Fullname Fullname,
SUBSTRING(@Fullname,1,CHARINDEX(' ',@Fullname,1)) firstname,
SUBSTRING(SUBSTRING(@Fullname,LEN(@Fullname)-CHARINDEX(' ',REVERSE(@Fullname),1)+2,CHARINDEX(' ',REVERSE(@Fullname),1)),1,1) lastnameINITIAL
) T
结果:
看看你能不能在这里工作
结果:
看看你能不能在这里工作
结果:
看看你能不能在这里工作
结果:
看看,你是否可以从这里开始工作。你最大的问题是名字和姓氏之间都可以有空格。那么你怎么知道姓氏从哪里开始呢?比如让·克劳德·范达姆 在这种情况下,电子邮件应该是什么样子?让·克劳德。v@gmail.com? 我建议您更改数据库,将名字和姓氏存储为单独的字段,或者最好有一个电子邮件字段。这样就容易多了。如果你不能做到这一点,你将不得不生成一些可能的电子邮件,并验证电子邮件是否存在 如果你认为第一个单词是名字,最后一个单词是姓氏,那么这就是如何生成电子邮件
DECLARE @Name varchar(100) = 'Natalie Marine Baily'
select SUBSTRING(@Name, 0, CHARINDEX(' ', @Name) - 1)
+ '.' + SUBSTRING(@Name,LEN( @Name) - CHARINDEX(' ',REVERSE(@Name))+2 , 1) + '@gmail.com'
你最大的问题是名字和姓氏之间都有空格。那么你怎么知道姓氏从哪里开始呢?比如让·克劳德·范达姆 在这种情况下,电子邮件应该是什么样子?让·克劳德。v@gmail.com? 我建议您更改数据库,将名字和姓氏存储为单独的字段,或者最好有一个电子邮件字段。这样就容易多了。如果你不能做到这一点,你将不得不生成一些可能的电子邮件,并验证电子邮件是否存在 如果你认为第一个单词是名字,最后一个单词是姓氏,那么这就是如何生成电子邮件
DECLARE @Name varchar(100) = 'Natalie Marine Baily'
select SUBSTRING(@Name, 0, CHARINDEX(' ', @Name) - 1)
+ '.' + SUBSTRING(@Name,LEN( @Name) - CHARINDEX(' ',REVERSE(@Name))+2 , 1) + '@gmail.com'
你最大的问题是名字和姓氏之间都有空格。那么你怎么知道姓氏从哪里开始呢?比如让·克劳德·范达姆 在这种情况下,电子邮件应该是什么样子?让·克劳德。v@gmail.com? 我建议您更改数据库,将名字和姓氏存储为单独的字段,或者最好有一个电子邮件字段。这样就容易多了。如果你不能做到这一点,你将不得不生成一些可能的电子邮件,并验证电子邮件是否存在 如果你认为第一个单词是名字,最后一个单词是姓氏,那么这就是如何生成电子邮件
DECLARE @Name varchar(100) = 'Natalie Marine Baily'
select SUBSTRING(@Name, 0, CHARINDEX(' ', @Name) - 1)
+ '.' + SUBSTRING(@Name,LEN( @Name) - CHARINDEX(' ',REVERSE(@Name))+2 , 1) + '@gmail.com'
你最大的问题是名字和姓氏之间都有空格。那么你怎么知道姓氏从哪里开始呢?比如让·克劳德·范达姆 在这种情况下,电子邮件应该是什么样子?让·克劳德。v@gmail.com? 我建议您更改数据库,将名字和姓氏存储为单独的字段,或者最好有一个电子邮件字段。这样就容易多了。如果你不能做到这一点,你将不得不生成一些可能的电子邮件,并验证电子邮件是否存在 如果你认为第一个单词是名字,最后一个单词是姓氏,那么这就是如何生成电子邮件
DECLARE @Name varchar(100) = 'Natalie Marine Baily'
select SUBSTRING(@Name, 0, CHARINDEX(' ', @Name) - 1)
+ '.' + SUBSTRING(@Name,LEN( @Name) - CHARINDEX(' ',REVERSE(@Name))+2 , 1) + '@gmail.com'