NMa*_*uro 0 mysql sql select email-validation
我正在尝试查询存储在数据库中的电子邮件地址以进行登录。我在 PHP 中的查询遇到问题,当我尝试在 PHPMyAdmin 中使用 SQL 查询时,它返回一个空集。经过一些测试后,我确定了 some@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 '%@%'.
Run Code Online (Sandbox Code Playgroud)
不起作用:
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'
Run Code Online (Sandbox Code Playgroud)
我完全不知道如何纠正这个问题。我唯一能想到的是@符号的问题,因为当我添加@符号时查询似乎失败了。您能提供的任何帮助将不胜感激!
您确定它不起作用吗?请参阅此处的证明,证明它有效 http://sqlfiddle.com/#!9/26b00/4。但你应该稍微改变一下你的查询,如下所示
\n\nSELECT * FROM table1 WHERE `Email` = \'something@gmail.com\' -- No need of LIKE operator\n\nSELECT * FROM table1 WHERE `Email` = \'something@gmail.com\' -- No need of LIKE operator\n\nSELECT * FROM table1 WHERE `Email` LIKE \'%@gmail.com\' -- search before string\n\nSELECT * FROM table1 WHERE `Email` LIKE \'something_gmail.com\' -- search a single char\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:
\n\n根据您的最新评论,您的整理armscii8_general_ci是这里的问题。例如创建如下表
CREATE TABLE Table1\n (`email` varchar(19) collate armscii8_general_ci)\n;\n\nINSERT INTO Table1\n (`email`)\nVALUES\n (\'something@gmail.com\')\n;\nRun Code Online (Sandbox Code Playgroud)\n\n在下面做一个select * ...回报;正如您所看到的,.as 变成了\xc2\xa9版权符号,这就是通配符与LIKE运算符不起作用的原因。
something@gmail\xc2\xa9com\nRun Code Online (Sandbox Code Playgroud)\n\n更改您的查询以使用_通配符和LIKE运算符来匹配任何单个字符,它将正常工作。请参阅http://sqlfiddle.com/#!9/ec46f/8
SELECT * FROM Table1 WHERE `Email` LIKE \'something@gmail_com\'; \nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
43711 次 |
| 最近记录: |