繁体   English   中英

搜索多列,好像它是mysql中的一列

[英]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

然而:

  1. 不要使用* 性能太差了。
  2. 我当然希望您的$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM