PostgreSQL如何从邮箱中提取@及之后的域名部分?
提取邮箱@及之后的域名部分的SQL解决方法
不用纠结邮箱长度,直接通过定位@的位置来截取就行,不同SQL数据库的写法如下:
MySQL/MariaDB
用LOCATE找到@的位置,再用SUBSTRING从该位置开始截取到末尾:
SELECT SUBSTRING(email, LOCATE('@', email)) AS domain FROM your_table_name;
示例输入example_email@outlook.com,输出就是@outlook.com。
SQL Server
用CHARINDEX定位@,结合SUBSTRING和LEN截取:
SELECT SUBSTRING(email, CHARINDEX('@', email), LEN(email)) AS domain FROM your_table_name;
PostgreSQL
用POSITION找到@的位置,再用SUBSTRING截取:
SELECT SUBSTRING(email FROM POSITION('@' IN email)) AS domain FROM your_table_name;
或者用RIGHT函数也能实现:
SELECT RIGHT(email, LENGTH(email) - POSITION('@' IN email) + 1) AS domain FROM your_table_name;
这些写法都能自动适配不同长度的邮箱,只要邮箱里包含@就能准确提取出@及之后的部分。
内容的提问来源于stack exchange,提问作者Fernanda
相关产品推荐
相关产品推荐

