mysql select 不适用于 varchar 字段

问题描述 投票:0回答:4

我有一个带有 varchar 类型的电子邮件字段的表。

select * 
from `table_name` 
WHERE email='some email'

适用于除表中一封电子邮件之外的所有其他电子邮件。

mysql select varchar
4个回答
8
投票

当这对您有问题的记录有效时

select * from table_name 
where email like '%some email%' 

那么您的数据中有前导或尾随空格。

要恢复更新现有的表数据,如下所示

update table_name
set email = trim(email)
where email like '%some email%' 

0
投票

您的电子邮件中可能有空格。 您可以检查电子邮件的长度。

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


0
投票

就我而言,问题是在代码中传递变量时,它还在双引号和变量之间留下了空格,当删除它时,没有必要放置 % 字符

这是我错误的代码,看看变量前后的空白:

$resul = $mysqli->query("SELECT * FROM `people` WHERE `user` = ' ".$user." '");

这才是正确的做法:

$resul = $mysqli->query("SELECT * FROM `people` WHERE `user` = '".$user."'");

删除这些空格,您将不需要使用通配符%

希望这个答案对你有帮助。


0
投票

在 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 ;
© www.soinside.com 2019 - 2024. All rights reserved.