我一直在努力思考一个可能的隐藏值(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/