从同一表中的列创建电子邮件地址

时间:2019-03-05 09:01:06

标签: sql sql-server-2008

我用名字,姓氏和邮件提供者制作了一张桌子。现在我想从中创建一个邮件地址。我怎样才能做到这一点?

这是当前表格的外观:

+----------+-------------+---------------+
|   Name   | Familiyname |   provider    |
+----------+-------------+---------------+
| Karl     | Dope        | gmail.com     |
| Jonathan | Dorianius   | hotmail.com   |
| Mary     | Jane        | spiderman.com |
+----------+-------------+---------------+

现在我想生成第四列,该列生成一个组合。在Google上查找时,我只发现了concat,因为我使用的是sql server 2008,所以我无法使用它。

最后应该看起来像这样:

+----------+-------------+---------------+-------------------------------+
|   Name   | Familiyname |   provider    |             mail              |
+----------+-------------+---------------+-------------------------------+
| Karl     | Dope        | gmail.com     | Karl.Dope@gmail.com           |
| Jonathan | Dorianius   | hotmail.com   | Jonathan.Doranius@hotmail.com |
| Mary     | Jane        | spiderman.com | Mary.Jane@spiderman.com       |
+----------+-------------+---------------+-------------------------------+

有什么想法或提示吗?

4 个答案:

答案 0 :(得分:0)

第一种方式

Select Name + Familiyname +'@' + provider As EmailAddress from @tblName

第二道

Select Name  +'@' + provider As EmailAddress from @tblName

第三种方式

Select Name +'_' + Familiyname +'@' + provider As EmailAddress from @tblName

答案 1 :(得分:0)

使用COALESCE()创建一个空的安全电子邮件地址。

(如果name和Familiyname都不为空,则返回name.Familiyname@provider。如果只有name为非null,则返回name@provider,或者,如果只有Familiyname不为null,则返回Familiyname@provider。)

select coalesce(name + '.' + Familiyname, name, Familiyname) + '@' + provider As EmailAddress
from tablename

答案 2 :(得分:0)

要获得输出中的确切值,并假设电子邮件始终为name.familiyname@provider,则:

 select a.* from tableA a 
       left join tbaleB b 
       on a.A1=b.B1 and a.A2=b.B2 and a.A3=b.B3 and a.A4=b.B4
       where b.B1 is null

对于您期望的输出,这应该可以解决问题

答案 3 :(得分:-1)

您可以使用mysql CONCAT()函数:

select *, CONCAT(name,'.',Familiyname,"@",provider) as mailAddress from tab;

demo