Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 拆分和合并字符串_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

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'