Sql 根据姓名建议电子邮件
我试图在SQLServer2008上进行查询,根据Sql 根据姓名建议电子邮件,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我试图在SQLServer2008上进行查询,根据Person表的FullName列获取电子邮件建议 例如:对于名为Rodrigo David Waltenberg的人,查询应返回Rodrigo。waltenberg@company.com 但我不知道如何将全名拆分为小写。全名可能也有中间名,但我只需要名字和姓氏。有人知道如何使用SQL实现这一点吗?利用谷歌的魔力通常会有很大帮助 : 将字符串转换为小写 : 用给定字符串中指定的其他字符串替换所需内容 因此,只要将两者结合起来,就可以这样做: 输
Person
表的FullName
列获取电子邮件建议
例如:对于名为Rodrigo David Waltenberg
的人
,查询应返回Rodrigo。waltenberg@company.com
但我不知道如何将全名拆分为小写。全名可能也有中间名,但我只需要名字和姓氏。有人知道如何使用SQL实现这一点吗?利用谷歌的魔力通常会有很大帮助
:
将字符串转换为小写
:
用给定字符串中指定的其他字符串替换所需内容
因此,只要将两者结合起来,就可以这样做:
输入小写,并将空格替换为点:
如果这还不够,而且只需要第一部分和最后一部分,那么忽略中间部分也是小菜一碟
步骤1:
:
步骤2:
:
步骤3:
:
步骤4:
:
如果名称中至少有两个部分由至少一个空格字符分隔,则只要将这些部分插在一起即可:
获取输入的第一部分和最后一部分,包括至少两部分,小写,用点连接:
此外,如果全名列可以包含前导空格和尾随空格,请使用修剪来消除它们。。。那会让事情变得一团糟
输入字符串任意数量部分的完整解决方案:
请记住在发帖前做些研究和尝试。…所以你想要
全名
,全小写,点而不是空格,并附加@whatevercompany.com
?那你为什么不试试呢?因为我不知道如何在SQL Server中使用sqlIn来实现这一点,只需使用REPLACE()
LOWER(REPLACE(FullName,,,,)+“@example.com”
)进行简单的连接,但是你还需要检查电子邮件是否已经被接收。哇!谢谢你解决了!最左边的字符。。。有趣。我很难找到更好的关键词来搜索,因为英语不是我的母语。
LOWER ( character_expression )
REPLACE ( string_expression , string_pattern , string_replacement )
REPLACE(LOWER(Fullname), ' ','.')
CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )
LEFT ( character_expression , integer_expression )
RIGHT ( character_expression , integer_expression )
REVERSE ( string_expression )
LOWER(
LEFT(Fullname, CHARINDEX(' ',Fullname)-1) +
'.' +
RIGHT(Fullname, CHARINDEX(' ', REVERSE(Fullname))-1)
) + '@whatever.com' as suggestion
CASE
--when there are at least two spaces ( optimally 3 names, or double spaces between names)
WHEN LEN(Fullname)-LEN(REPLACE(Fullname, ' ','')) >1
THEN
LOWER(
LEFT(Fullname, CHARINDEX(' ',Fullname)-1) +
'.' +
RIGHT(Fullname, CHARINDEX(' ', REVERSE(Fullname))-1)
)
ELSE
--at most one space in name
REPLACE(LOWER(Fullname), ' ','.')
END + '@whatever.com' as suggestion