MYSQL 查询隐藏字符失败?

标签 mysql

我一直在努力思考一个可能的隐藏值(value)。

每当我运行这个查询时

SELECT * FROM LIST WHERE `GROUP_2` = "Yes";

我得到 0 个结果。

每当我运行这个:

SELECT * FROM LIST WHERE `GROUP_2` LIKE 'Yes%';

我能够提取结果。

我已经尝试过使用 MySQL 加载数据进行 csv 导入的许多不同的导出和导入参数,但没有任何效果。 GROUP_1 和 GROUP_2 都设置为 varchar(55)

我可以运行任何查询来确定此问题的原因或检测隐藏的断线吗?

ID  name    GROUP_1 GROUP_2
1   Bob     No      Yes
2   Jim     Yes     No

最佳答案

要确定问题所在,您可以使用 HEX功能:

SELECT group_1, HEX(group_1)
FROM table
WHERE group_1 LIKE 'Yes%' AND group_1!='Yes'

yes 应该编码为 596573(根据使用的代码集,它可能会有所不同)但您会在它后面看到一些其他字符。

编辑

我建议您找到根本原因并修复文本文件或导入过程。但是,如果您想在不进行新导入的情况下修复现有数据,则有多种选择。

您可以点击 xQbert 链接(感谢您提供链接!):

update table SET group_2 = TRIM(TRAILING '\n' FROM group_2);

或修复您自己的查询:

UPDATE TABLE set GROUP_2 = replace(replace(GROUP_2,'\n',''), '\r', '');

或者如果您只有是/否值:

UPDATE TABLE set GROUP_2='Yes' WHERE group_2 LIKE 'Yes%' AND group_2!='Yes';
UPDATE TABLE set GROUP_2='No' WHERE group_2 LIKE 'No%' AND group_2!='No';

关于MYSQL 查询隐藏字符失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32616486/

相关文章:

php - 使用 PHP 检查 MySQL 查询的结果是哪个表?

mysql - 内部异常 : Table 'xxx.aspnetusers' doesn't exist

php - 使用 PDO 从查询创建多维数组

mysql - 根据外键的子字符串连接两个表(MS SQL 2005)

mysql - 根据多对多关系检索现有记录

java - 配置tomcat、hibernate和mysql

mysql 返回多行

php - MySQL在插入前删除空格

mysql - 多语言Web应用程序的数据库设计模式(MySQL)

mysql - centos 7 5.5.56-MariaDB 错误 2013 (HY000) : Lost connection to MySQL server during query