无法通过给定的varchar列选择行,其中row的列中包含句点('。')

时间:2012-11-27 23:37:22

标签: mysql

我遇到这个奇怪的问题,我可以将电子邮件“test@gmail.com”存储到我的数据库中,该数据库是varchar()或text(),但我无法根据电子邮件选择行。如果我通过另一个标识符(例如,名为“email_id”的主键)选择列,那么我可以显示包含句点的电子邮件。我还可以选择带有电子邮件列的任何行,其中varchar / text没有句点,例如“test @ gmailcom”。

我在测试数据库和我的舞台数据库上复制了这个。这也不是代码问题,因为我在从查询面板直接插入数据库时​​测试并复制了它。

我尝试使用谷歌搜索,但也无济于事。

编辑:

我正确使用varchar()和/或text()吗?应该是别的吗?我已经看到一些SO帖子(找不到它们)说明使用VarChar。

对于记录,我正在使用mysql WorkBench进行插入/选择,如果这有任何区别。

编辑2:

以下是两条记录:

client_id (PK, AI, INT, UNSIGNED), email (varchar(500), not null) 

client_login

的表格中
client_id = 1, email = 'test@gmail.com' 

client_id = 2, email = 'test@gmailcom'

以下选择

select * from client_login where email='test@gmail.com'

返回0行

select * from client_login where email='test@gmailcom'

返回1行

编辑3:

我也可以

select * from client_login where client_id=1

它会显示email = 'test@gmail.com'的行,这是奇怪的,因为它好像是句号在行中,但实际上不是句号...

2 个答案:

答案 0 :(得分:2)

坦率地说,我不相信问题是如上所述。

这是你的“问题”running in SQLFiddle,表明它运作正常。

我认为电子邮件列中的数据不是您认为的,尤其是“点”字符 尝试使用手动数据更新它。


要协助调试此问题,请尝试使用HEX()函数将列值输出为十六进制:

select HEX(email)

仔细检查输出。

答案 1 :(得分:0)