2017-08-31 7 views
-3

私は電子メールアドレスを含む行が1つしかない大きなテーブルを持っています。可能であれば、電子メールから人名を取得する必要があります。たとえば、[email protected]のメールから、名前(ダニエラ)と姓(マイヤー)を取得する必要があります。 私は人の名前でテーブルが必要だと思うし、このデータベースと各電子メールを比較します。しかし、私はそのような比較を行う正しい方法は何かを理解できません。電子メールから人名を抽出する

+0

あなたがしようとしているのは、電子メールの内容ではなく、電子メールのアドレスからユーザーの名前を抽出することですか? – campovski

+5

あなたは4年以上にわたりメンバーになっていますか?それでも、[ヘルプページ](http://stackoverflow.com/help)、特に[ここではどのトピックを聞くことができますか?](http://stackoverflow.com/help/)セクションは読んでいません。 on-topic)と[[どのような種類の質問を避けるべきですか?]](http://stackoverflow.com/help/dont-ask)を参照してください。そして、あなたは[SOツアー(http://stackoverflow.com/tour)または[良い質問をする方法について読む](http://stackoverflow.com/help/how-to-ask))をしていませんか?そして、あなたは[最小、完全で、かつ実証可能な例](http://stackoverflow.com/help/mcve)の作成方法を学んでいませんか? –

+2

データベースとテーブルを混同しないでください。あなたが持っているサンプルテーブルを与えてください –

答えて

0

これを試してみてください:

SELECT LEFT(emailaddress, CHARINDEX('@', emailaddress) - 1) 

それは、@の位置を求め、そして最大文字数を取るは含まない(それはだ - 1)@記号。

@ thoughがない文字列には注意してください。空の文字列になります。

異なるデータベースまたは異なるテーブルにデータがあるかどうかは完全にはわかりませんでした。私はまた、どのSQL言語で欲しいのかわかりません。

運、

0

あなたはSUBSTRING

SELECT SUBSTRING(email_column_name,0, CHARINDEX('@',email_column_name)) FROM table_name 

使用することができますしかし、あなたは名前としてそれを検証することはできません。

更新回答:は、電子メールアドレスに番号を無視するあなたはwan't場合、試すREPLACE

SELECT REPLACE 
(REPLACE 
(REPLACE 
(REPLACE 
(REPLACE 
(REPLACE 
(REPLACE 
(REPLACE 
(REPLACE 
(REPLACE (SUBSTRING(email_column_name,0, CHARINDEX('@',email_column_name)), '0', ''), 
'1', ''), 
'2', ''), 
'3', ''), 
'4', ''), 
'5', ''), 
'6', ''), 
'7', ''), 
'8', ''), 
'9', '') FROM table_name 

注:SQL Serverで完全に作品2012

0

Postgresのあなたにsplit_partを使用して区切られた文字列の要素を取得できます。

select split_part(split_part(email, '@', 1), '.', 1) as firstname, 
     split_part(split_part(email, '@', 1), '.', 2) as lastname 
from the_table; 

内側のsplit_part()は、@の前の部分を抽出し、外側のsplit_part()は、それから1番目と2番目の要素を取得します。


あなたは電子メールが本当にがそのように構成されていることを検証できないことに注意してください。 [email protected]の場合、ファーストネームはdent、ファストネームはarthurとなります。

関連する問題