MySql使用通配符生成基于参数的结果

MySql使用通配符生成基于参数的结果,mysql,Mysql,例如,我有表邮件 id | wildcard ------------------ 1 | %@hotmail.com 我可以轻松地使用存储的通配符检查电子邮件 Select * From mail where 'abcde@hotmail.com' like wildcard; 现在我想查看不同邮件的列表。e、 g.('bar@hotmail.com', bar@webmail.com, 'foo@hotmail.com'). 当然,我可以迭代列表并检查每一封邮件,但我会寻找一个解决方案

例如,我有表邮件

id | wildcard
------------------
1  | %@hotmail.com
我可以轻松地使用存储的通配符检查电子邮件

Select * From mail where 'abcde@hotmail.com' like wildcard;
现在我想查看不同邮件的列表。e、 g.('bar@hotmail.com', bar@webmail.com, 'foo@hotmail.com'). 当然,我可以迭代列表并检查每一封邮件,但我会寻找一个解决方案,用一个查询检查所有邮件。比如(在示例列表中),我可以看到triggerd通配符和选中的电子邮件本身

email | wildcard
----------------
bar@hotmail.com | %@hotmail.com
foo@hotmail.com | %@hotmail.com
这可能吗

编辑: 换言之,澄清我的意图。示例邮件表包含超过1000个通配符。我有超过10000个邮件地址。现在我想从这个金额中提取所有邮件地址,这将至少触发一个通配符。我可以对许多数据库请求执行此操作(检查每封邮件),但我更愿意对单个数据库请求执行此操作。我认为这一事实会有所帮助:邮件本身存储在另一个表中


谢谢你的帮助

我想你打算这么做

SELECT *
FROM mail
WHERE email like '%@hotmail.com'

您可能正在寻找类似以下内容:

SET @wildcard = '@hotmail.com';
SET @wildcard2 = 'foo';

SELECT email, @wildcard as wildcard
FROM mail
WHERE email LIKE CONCAT('%', @wildcard);

SELECT email, @wildcard2 as wildcard
FROM mail
WHERE email LIKE CONCAT(@wildcard2, '%');

可用于单个请求。但是,如果一个数据库有一个邮件列表,也有一个通配符列表,我看不出这应该如何工作。通配符本身存储在数据库中。我可以先提取所有通配符并将它们用于邮件表吗。。。在(…,…)。。。