【发布时间】:2015-09-10 21:35:01
【问题描述】:
我正在尝试查询存储在我的数据库中的电子邮件地址以进行登录。我在 PHP 中的查询存在问题,当我尝试在 PHPMyAdmin 中使用 SQL 进行查询时,它返回一个空集。在进行了一些测试后,我确定了某封电子邮件的以下内容:something@gmail.com:
作品:
SELECT * FROM `Careers` WHERE `Email` LIKE '%something%' and
SELECT * FROM `Careers` WHERE `Email` LIKE '%gmail.com%' and
SELECT * FROM `Careers` WHERE `Email` LIKE '%@%'.
不起作用:
SELECT * FROM `Careers` WHERE `Email` LIKE 'something@gmail.com' and
SELECT * FROM `Careers` WHERE `Email` LIKE '%something@gmail.com%' and
SELECT * FROM `Careers` WHERE `Email` LIKE '%@gmail.com%'
SELECT * FROM `Careers` WHERE `Email` LIKE '%something%gmail.com'
我完全不知道如何纠正这个问题。我能想到的唯一想法是 @ 符号有问题,因为当我添加 @ 符号时,查询似乎失败了。您能提供的任何帮助将不胜感激!
【问题讨论】:
-
你确认最后一行'Works'和'Doesn't work'吗?因为Works的最后一行包含一个'@',而Not Work的最后一行不包含它。
-
@LaurentCrivello 是的,我已经在我的数据库上执行了这些查询。我不确定为什么最后一个“不工作”失败而最后一行“工作”失败。
-
@Nmaduro 我无法重现您的问题 [link]sqlfiddle.com/#!9/e9e21/3
-
你试过转义@符号吗? \@ 我更熟悉 Oracle 或 SQLServer 语法,所以不是 100% 确定
-
也许:stackoverflow.com/questions/7230068/… 在 oracle set define off 将关闭用户定义的性质。也许 MySQL 有一个默认设置已更改为不再忽略 @ 作为用户变量。
标签: mysql sql select email-validation