Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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,我试图在SQLServer2008上进行查询,根据Person表的FullName列获取电子邮件建议 例如:对于名为Rodrigo David Waltenberg的人,查询应返回Rodrigo。waltenberg@company.com 但我不知道如何将全名拆分为小写。全名可能也有中间名,但我只需要名字和姓氏。有人知道如何使用SQL实现这一点吗?利用谷歌的魔力通常会有很大帮助 : 将字符串转换为小写 : 用给定字符串中指定的其他字符串替换所需内容 因此,只要将两者结合起来,就可以这样做: 输

我试图在SQLServer2008上进行查询,根据
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