我有一个带有 varchar 类型的电子邮件字段的表。
select *
from `table_name`
WHERE email='some email'
适用于除表中一封电子邮件之外的所有其他电子邮件。
当这对您有问题的记录有效时
select * from table_name
where email like '%some email%'
那么您的数据中有前导或尾随空格。
要恢复更新现有的表数据,如下所示
update table_name
set email = trim(email)
where email like '%some email%'
您的电子邮件中可能有空格。 您可以检查电子邮件的长度。
SELECT length(email)
FROM `table_name`
WHERE `email` LIKE '%email%'
使用通配符
select * from table_name
where email like '%some email%'
或访问这里了解更多组合
http://www.w3schools.com/sql/sql_wildcards.asp
就我而言,问题是在代码中传递变量时,它还在双引号和变量之间留下了空格,当删除它时,没有必要放置 % 字符
这是我错误的代码,看看变量前后的空白:
$resul = $mysqli->query("SELECT * FROM `people` WHERE `user` = ' ".$user." '");
这才是正确的做法:
$resul = $mysqli->query("SELECT * FROM `people` WHERE `user` = '".$user."'");
删除这些空格,您将不需要使用通配符%
希望这个答案对你有帮助。
在 mysql 中仅针对一个电子邮件 ID 遇到相同的错误
5.7.12
。尝试过更新/修剪等等,仍然没有运气。
更改了字符集,解决了问题:
ALTER TABLE table_name
CHANGE COLUMN email email VARCHAR(255) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci' NULL DEFAULT NULL ;