[英]search multiple columns as if it was one column in mysql
我有一个表,将电子邮件存储在3个不同的列中,名称为host和domain。 我想加入这些列以创建一个列,这样我就可以通过完整的电子邮件地址进行搜索。 就像
SELECT * FROM email_eml WHERE (all the columns combined) = $email;
电子邮件存储中没有。 我都不希望最终结果包含这些,并且在任何两个列中都没有@。
SELECT * FROM email_eml WHERE CONCAT( name, '@', host, '.', domain ) = $email
有关CONCAT函数的信息,请参见文档(假设您使用的是MySQL): http : //dev.mysql.com/doc/refman/5.5/zh-CN/string-functions.html#function_concat
然而:
*
。 性能太差了。 $email
变量可以转义,并且没有SQL注入风险。 如果不是,请使用准备好的语句。 为了使MySQL使用索引(您是否为这些列建立了索引,对吗?),我宁愿分割您的输入电子邮件地址,然后分别在每个字段上进行搜索,即:
SELECT CONCAT(name, '@', host, '.', domain) AS email
WHERE name = 'user' AND host = 'mysite' AND domain = 'com'
您是否真的需要在数据库中将三个电子邮件地址部分分开? 否则,只需存储完整的电子邮件。
SELECT * FROM email_eml WHERE name+'@'+host+'.'+domain = '$email';
您可以使用CONCAT()
函数 。
那么您的请求将是:
SELECT * FROM email_eml WHERE CONCAT(name,'@',host,'.',domain) = $email
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.