mysql - 从xyz中选择电子邮件,其中email =“%gmail.com”

时间:2013-01-25 08:14:25

标签: php mysql wildcard

有没有办法可以从数据库中选择包含某些数据的条目?我在数据库中收到了很多电子邮件地址,但我只想从一个域中选择。它甚至可能吗?

4 个答案:

答案 0 :(得分:6)

当然 - 只需使用LIKE运算符。

SELECT email FROM Persons
WHERE email LIKE '%gmail.com'

答案 1 :(得分:1)

不建议您进行通配符搜索 这是因为mysql无法使用索引来固定选择查询 特别是你提到你在数据库中有很多电子邮件。

或者,您可以使用其他字段,hostname仅存储主机名 当然要为它建立一个索引。

如果您需要使用gmail.com搜索电子邮件, 然后你可以做直字符串比较

SELECT email FROM Persons
WHERE hostname='gmail.com';

由于直接字符串比较是与mysql索引的良好配合,因此您的查询将得到优化。

答案 2 :(得分:1)

作为ajreal points out,MySQL在一般情况下不能使用索引来优化LIKE查询。但是在尾随通配符的特定情况下,唯一的%位于模式的最后(实际上是“以”查询开头),优化器可以很好地完成使用索引加速查询。

因此,如果您要添加另一个存储电子邮件地址的索引列,则可以有效地查询

SELECT email FROM xyz WHERE reverse_email LIKE 'moc.liamg@%`

查找所有gmail地址,或者查找英国域名下所有地址的LIKE 'ku.%等。您可以让数据库使用触发器使此列保持最新,因此它不会影响您现有的更新代码

CREATE TRIGGER emailinsert BEFORE INSERT ON xyz
FOR EACH ROW SET NEW.reverse_email = REVERSE(NEW.email);

CREATE TRIGGER emailupdate BEFORE UPDATE ON xyz
FOR EACH ROW SET NEW.reverse_email = REVERSE(NEW.email);

答案 3 :(得分:0)

您需要使用LIKE MYSQL CLAUSE

SELECT * FROM email_table WHERE email LIKE "%gmail.com"