仅从电子邮件地址中选择域名

时间:2021-03-08 00:22:29

标签: mysql

我正在尝试在我的 Domain_ 查询中获取域而不是完整的电子邮件地址。在下面的语句中,我选择了 user_data。 Email_address但这提供了 foo@bar.com 而不是 bar.com 这还不够:

INSERT INTO user_orders
        (`User_ID`, `Order_Number`, `Customer_ID`, `Email_address`, `Domain_`)
SELECT 
       user_data.`User_ID`, order_data.`Order_Number`, user_data.`Customer_ID`, 
       user_data.`Email_address`, user_data.`Domain_` 
FROM user_data
INNER JOIN order_data ON order_data.User_ID = user_data.User_ID;

我的理解是 SUBSTRING_INDEX(Email_address,'@',-1) 因为 Domain_ 可以工作,所以我尝试了:

INSERT INTO user_orders
         (`User_ID`, `Order_Number`, `Customer_ID`, `Email_address`, `Domain_`)
SELECT 
     user_data.`User_ID`, order_data.`Order_Number`, user_data.`Customer_ID`, user_data.`Email_address`,  
    (SUBSTRING_INDEX(SUBSTR(user_data.`Email_address`, INSTR(user_data.`Email_address`, '@') + 1),'.',1)) as user_data.`Domain_` 
FROM user_data
INNER JOIN order_data ON order_data.User_ID = user_data.User_ID;

但查询失败并提供语法错误。

为了更清楚地将其隔离,这就是我所做的不同:

(SUBSTRING_INDEX(SUBSTR(user_data.`Email_address`, INSTR(user_data.`Email_address`, '@') + 1),'.',1)) as user_data.`Domain_` 

如果我遇到困难,任何帮助将不胜感激。

<块引用>

错误:INSERT INTO user_orders(User_ID, Order_Number, Customer_ID, Email_address, Domain_) 选择 user_data.User_ID, order_data.Order_Number, user_data.Customer_ID, user_data.Email_address, (SUBSTRING_INDEX(SUBSTR(user_data.Email_address, INSTR(user_data. Email_address, '@') + 1),'.',1)) 作为 user_data.Domain_ FROM user_data 内部连接 ​​order_data on order_data.User_ID = user_data.User_ID; /* SQL 错误 (1064): 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在 '.Domain_ FROM user_data 附近使用的正确语法 内部联接 order_data on order_data.User_ID = user...' 在第 2 行 */```

1 个答案:

答案 0 :(得分:0)

如果你执行例如

SELECT split_part(email, '@', 2) AS Domain FROM user_orders;

它将显示“@”之后的所有内容,这是您想要的域。

所有信息

enter image description here

现在,使用查询

enter image description here