私は文字列[email protected]
を持っています。文字列を3列に解析したいと思います。フィールドにSQLを解析する文字列
- カラム1 - FIRSTNAME
- カラム2 - LASTNAME
- カラム3 - domain.com
ノー成功しRTRIM
、SUBSTR
とREGEXP_SUBSTR
を使用して、いくつかのバリエーションを試みました。どんな援助も役に立つでしょう。
私は文字列[email protected]
を持っています。文字列を3列に解析したいと思います。フィールドにSQLを解析する文字列
ノー成功しRTRIM
、SUBSTR
とREGEXP_SUBSTR
を使用して、いくつかのバリエーションを試みました。どんな援助も役に立つでしょう。
と(Parsename機能のために)MSSQL 2012+を交換し
declare @myemail varchar(50) = '[email protected]'
select parsename(replace(@myemail,right(@myemail,charindex('@',reverse(@myemail))),''),2) [firstname],
parsename(replace(@myemail,right(@myemail,charindex('@',reverse(@myemail))),''),1) [Lastname],
right(@myemail,charindex('@',reverse(@myemail))) [Domain]
あなたが使用しているデータベースを指定していないので、私はこの質問にお答えしますSQL Server:
SELECT SUBSTRING(q.email, 1, CHARINDEX('.', q.email) - 1) AS firstname,
SUBSTRING(q.email, CHARINDEX('.', q.email) + 1, CHARINDEX('@', q.email) - CHARINDEX('.', q.email) - 1) AS lastname,
SUBSTRING(q.email, CHARINDEX('@', q.email) + 1, LEN(q.email)) AS domain
FROM (SELECT '[email protected]' AS email) q
ここにはfiddleがあります。私はデモのためだけにテーブルをハードコードしましたが、もちろん自分のテーブルから選択します。このクエリは、すべてのデータが同じパターンに従っていると仮定します。
そして、あなたはLEFT
とRIGHT
を使用することを好む場合:
SELECT LEFT(q.email, CHARINDEX('.', q.email) - 1) AS firstname,
SUBSTRING(q.email, CHARINDEX('.', q.email) + 1, CHARINDEX('@', q.email) - CHARINDEX('.', q.email) - 1) AS lastname,
RIGHT(q.email, LEN(q.email) - CHARINDEX('@', q.email)) AS domain
FROM (SELECT '[email protected]' AS email) q
ここfiddleです。
優秀!それがトリックでした。返事をいただいた皆様に感謝します。 – TFeole
これを行うにはいくつかの方法があります。他の人々が言及したように、それはあなたが取り組んでいるデータベースにも依存します。
ここには、SUBSTR、INSTR、REVERSE、LENGTHの各機能を組み合わせたOracleバージョンがあります。
SELECT '[email protected]' "FULL NAME" ,
SUBSTR('[email protected]', 0, (INSTR('[email protected]', '.')-1)) "FIRST NAME ",
SUBSTR('[email protected]' , (INSTR('[email protected]' , '.')+1), LENGTH(SUBSTR('[email protected]', (INSTR('[email protected]', '.')+1))) - INSTR(REVERSE('[email protected]'), '@')) as "LAST NAME",
SUBSTR('[email protected]' , (INSTR('[email protected]', '@')+1)) "DOMAIN NAME"
FROM DUAL
投稿されたすべての回答に感謝します。とても有難い.. – TFeole
どのデータベースエンジンを使用していますか?質問を編集し、データベースタグを追加してください。 –
t-sqlのparsenameを使用する – maSTAShuFu
はその一例のようなすべてのデータですか?アンダースコアなし、複数のイニシャルなし、全く考慮すべき事項はありません。各ベンダーの文字列機能が異なるため、どのデータベースに問い合わせるまで、答えを得ることはまずありません。 –