MySQL SELECT WHERE子句的帮助

MySQL SELECT WHERE子句的帮助,sql,mysql,Sql,Mysql,“我的表”中的一列包含电子邮件地址 我有一个文本字符串,其中包含电子邮件地址的几个用户名,用逗号分隔。如果有必要,我可以将文本插入数组,以使我的SELECTWHERE子句正常工作 文本字符串搜索参数为“bob,sally,steve” 我想生成一个WHERE子句,该子句只返回表中电子邮件地址的用户名部分与文本字符串搜索参数中的一个用户名匹配的行 因此与frank@email.com不会被退回,但sally@zmail.com是的 是否有人拥有生成此结果的WHERE子句示例 谢谢。也许是 WHER

“我的表”中的一列包含电子邮件地址

我有一个文本字符串,其中包含电子邮件地址的几个用户名,用逗号分隔。如果有必要,我可以将文本插入数组,以使我的SELECTWHERE子句正常工作

文本字符串搜索参数为“bob,sally,steve”

我想生成一个WHERE子句,该子句只返回表中电子邮件地址的用户名部分与文本字符串搜索参数中的一个用户名匹配的行

因此与frank@email.com不会被退回,但sally@zmail.com是的

是否有人拥有生成此结果的WHERE子句示例

谢谢。

也许是

WHERE email like '%bob%' or email like '%sally%' or email like '%steve%'
请注意,这也将匹配adjklqwefh@bob.com. 如果只想匹配起始字符,只需省略前导字符%:

如果您想更严格一些,可以尝试:

WHERE email like 'bob@%.com' or email like 'sally@%.com' or email like 'steve@%.com'

另外,请仔细阅读运算符和正则表达式。此处不需要它,但最终可能会用到它。

这对您有用,但我认为速度会非常慢

WHERE SUBSTRING(email, 1, (LOCATE('@', email) - 1)) in ('steve', 'smith', .... )

下面的语句将选择“电子邮件”列中地址以开头的任何行bob@. 您可以用您试图匹配的用户名替换bob

SELECT * FROM table_name WHERE email REGEXP "^bob@"

那么...怎么样franksally@email.com“天哪,小马们:好极了!”;我只想把它用于以用户名开头的地址,所以我在测试中省略了开头的%,结果成功了。谢谢。不,不起作用…REGEXP^bob@或REGEXP^sally@或REGEXP^steve@-不返回行如果要添加多个条件,查询将如下所示:从电子邮件REGEXP^bob@或电子邮件REGEXP^sally@或电子邮件REGEXP所在的表名中选择*^steve@Ah,很抱歉,我错过了/忽略了列名部分。我尝试过这样做,但仍然不起作用。我有一个有效的解决方案-所以我继续。谢谢大家。
SELECT * FROM table_name WHERE email REGEXP "^bob@"