Google の魔法の力を活用すると、多くの場合に役立ちます
「MS SQL 小文字文字列」、1 番目のヒット:
LOWER ( character_expression )
文字列を小文字に変換します。
「MS SQL 置換文字列」、最初のヒット:
REPLACE ( string_expression , string_pattern , string_replacement )
必要なものを、指定された文字列で指定した他の文字列に置き換えます...
したがって、2つを組み合わせて、次のようにします。
入力を小文字にし、スペースをドットに置き換えます。
REPLACE(LOWER(Fullname), ' ','.')
これでは不十分で、最初と最後の部分だけが必要な場合は、中間部分を除外するのは簡単なことです。
ステップ 1:
「文字列内の char の MS SQL インデックス」、最初のヒット:
CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )
ステップ2:
「MS SQL 文字列の左端の文字」、最初のヒット:
LEFT ( character_expression , integer_expression )
ステップ 3:
「MS SQL 文字列の右端の文字」、最初のヒット:
RIGHT ( character_expression , integer_expression )
ステップ 4:
「MS SQL 逆文字列」、最初のヒット:
REVERSE ( string_expression )
常に true の場合、その名前には少なくとも 1 つの空白文字で区切られた少なくとも 2 つの部分があり、それらの部分をつなぎ合わせてください:
少なくとも 2 つの部分 (小文字化) で構成される入力の最初と最後の部分を取得し、それらをドットで結合します。
LOWER(
LEFT(Fullname, CHARINDEX(' ',Fullname)-1) +
'.' +
RIGHT(Fullname, CHARINDEX(' ', REVERSE(Fullname))-1)
) + '@whatever.com' as suggestion
また、Fullname列に先頭と末尾のスペースが含まれる可能性がある場合は、TRIMを使用してそれらを削除してください...それは面倒になります...
入力文字列の任意の量の完全なソリューション:
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
また、質問を投稿する前に、調査を行い、何かを試すことを忘れないでください。