0

mysql の部分文字列とトリムについて助けが必要です。次のような列にデータがあります

uvw.xyz.com!johndoe@abc.efg.com

@ユーザー名と最初のドメインとリモートをフリップフロップする前にすべてを取得しようとしています! の後に先行ドメイン@があるため、結果は になりますjohndoe@uvw.xyz.com

私は何かを得た..

select substr(m1.username, 10, 50) 
from (select username from my_table where username like '%!%')) as results;

しかし、これは固定フィールドを見ているので@、! と一緒にキャラクターから離れる必要があります。そしてフリップフループ。どんな助けでも素晴らしいでしょう。

ありがとう

4

1 に答える 1

1

これは機能するはずです:

SET @var = 'uvw.xyz.com!johndoe@abc.efg.com';
SELECT
    SUBSTRING_INDEX(SUBSTRING_INDEX(@var, '@', 1), '!', -1) AS local,
    SUBSTRING_INDEX(SUBSTRING_INDEX(@var, '@', 1), '!', 1) AS domain

結果

| ローカル| ドメイン|
-------------------------
| johndoe | uvw.xyz.com |

連結値を取得するには、次を使用できます。

SELECT
    CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(@var, '@', 1), '!', -1), '@',
    SUBSTRING_INDEX(SUBSTRING_INDEX(@var, '@', 1), '!', 1)) AS email

結果

| メール|
-----------------------
| johndoe@uvw.xyz.com |

に置き換え@varますm1.username

于 2013-01-11T15:31:06.420 に答える