mysql - 无法通过给定的 varchar 列选择行,其中行的列中有句点 ('.' )

标签 mysql

我遇到了这个奇怪的问题,我可以将电子邮件“test@gmail.com”存储到我的数据库中,该数据库是 varchar() 或 text(),但我无法根据电子邮件选择行。如果我通过另一个标识符(例如,名为“email_id”的主键)选择该列,那么我可以显示带有句点的电子邮件。我还可以选择任何包含电子邮件列且其中没有句点的 varchar/文本的行,例如“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' 所在的行,这很奇怪,因为就好像句点在行中,但实际上不是句点......

最佳答案

坦白说,我不认为问题是如所描述的那样。

这是你的“问题”running in SQLFiddle ,表明它工作得很好。

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

<小时/>

为了帮助调试此问题,请尝试使用 HEX() 将列值输出为十六进制。功能:

select HEX(email)

并仔细检查输出。

关于mysql - 无法通过给定的 varchar 列选择行,其中行的列中有句点 ('.' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13595205/

相关文章:

asp.net - 使用 MySqlSessionProvider 时,什么删除过期的 session ?

php - 准确保存和显示文本的输入和提交方式

Mysql 按 2 个日期中的最新日期订购商品

mysql - 在 SQL 中比较其他 2 列时,从列中选择 ID

带有逗号分隔值的mysql

java - 我在将数据从 MySQL 获取到我的 java 项目时遇到问题

php - 更新和插入查询不适用于 php

php - 如何使用 Nginx VPS 在单个 Ubuntu 实例上设置多个 WordPress 站点

java - 无法更改MySQL字符集utf8,一旦停止/启动服务器,它保持不变

mysql - 这个查询有什么问题?