2016-01-12 64 views
0

,比如我有表郵件MySQL的使用通配符來生成基於參數結果

id | wildcard 
------------------ 
1 | %@hotmail.com 

我可以很容易地與存儲的通配符郵件檢查電子郵件

Select * From mail where '[email protected]' like wildcard; 

現在我想檢查不同郵件的列表。例如('[email protected]',[email protected],'[email protected]')。當然,我可以迭代列表並檢查每一封郵件,但我會考慮使用一個查詢來檢查所有郵件。類似於(對於示例列表),我可以在其中看到觸發通配符和檢查的電子郵件本身

email | wildcard 
---------------- 
[email protected] | %@hotmail.com 
[email protected] | %@hotmail.com 

這是可能的嗎?

編輯: 換句話說,就是爲了闡明我的意圖。示例郵件表有超過1000個通配符。我有一個> 10000的郵件地址。現在我想從這個數量中獲取所有的郵件地址,這將觸發至少一個通配符。我可以用很多數據庫請求(檢查每封郵件)來做到這一點,但我寧願使用單個數據庫請求來完成此操作。我的事實會有所幫助:它自己的郵件存儲在另一個表中。

感謝您的幫助

回答

0

我認爲你打算做這個

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

通配符本身存儲在數據庫中。我可以先獲取所有通配符並將它們用於郵件表... IN(...,...)... – SimonA

0

您可能正在尋找這樣的事情:

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, '%'); 
+0

可用於單個請求。但是我不明白這應該如何工作,如果有一個郵件列表,也是通配符列表。 – SimonA