我有一个包含以下列的表类型:ID,Name,Type。该表充满了大约300行。其中一行:
ID Name Type
------------------
1 BMW S 1000 RR
以下查询返回此行:
SELECT * FROM Types WHERE Name = 'BMW'
但是,以下查询不返回任何内容:
SELECT * FROM Types WHERE Type = 'S 1000 RR'
Type中没有多余的空格,Name和Type的数据类型完全相同(varchar 255,utf8_unicode_ci)。什么可能导致这种情况?
我正在使用MySQL,InnoDB。使用phpMyAdmin我得到完全相同的结果,所以列名中没有拼写错误...
答案 0 :(得分:3)
我发现了问题:要填写表格,我每行都在阅读一个文本文件。换行符是问题,它在phpMyAdmin的浏览表视图中是不可见的,但我在编辑单行时看到了它。
以下查询解决了我的问题:
UPDATE Types SET Type = REPLACE(REPLACE(Type, '\r', ''), '\n', '');
在How to remove new line characters from data rows in mysql?
中找到感谢大家的评论。
答案 1 :(得分:0)
我确信由于修剪
试试这个
SELECT * FROM Types WHERE TRIM(Type) = 'S 1000 RR'
答案 2 :(得分:0)
它不是那样的。您的表名和列名都很好,查询也提供了正确的o / p: 走 CREATE TABLE类型 ( ID int, 名称varchar(3), 输入varchar(9));
去
插入类型
(ID,名称,类型)
VALUES
(1,'宝马',' S 1000 RR')
SELECT * FROM Types WHERE Type = 'S 1000 RR'