MySQL:SELECT * FROM表WHERE字段=“某些文本”不起作用

时间:2014-06-07 14:05:16

标签: mysql select where

我正在尝试在文本字段上INNER JOIN两个表,但我无法使其工作。 我已经回过头来查看我是否可以确定我的查询在哪里崩溃。 我简化了我的查询只使用一个表,看看我是否可以根据文本字符串从中选择数据。 我无法使它发挥作用。 我觉得自己像个白痴。 这是如此基本,为什么不这样做呢?

select * from `my-table`
where myKey = "some-text-data-that-i-copied-from-the-data-in-the-table";

不返回任何行。 "一些文本数据 - 即-I-复制-从 - - 数据 - 内式表"在现场myKey。我能看到它。它在桌子上!!!

[如果它有所不同我最熟悉使用Access前端而我正在移植我的"技能"到MySQL,因为MySQL真的更好......这似乎是有史以来最磨损的SELECT语句,但它没有做任何事情!]

编辑:

IMSoP可以帮助任何...

select * from mymathssowlink
where MyMathsResourceKey = 'KS2-Number-Counting and Place Value-NC3-Negative Numbers 1';

编辑2:

Diego Marinelli - 谢谢 - 这会返回数据

select * from mymathssowlink
where MyMathsResourceKey like '%KS2%';

编辑3:

这有效......

select * from mymathssowlink
where MyMathsResourceKey like '%KS2-Number-Counting and Place Value-NC3-Negative Numbers 1%';

编辑4:

但这仍然没有......

select * from mymathssowlink
where MyMathsResourceKey = 'KS2-Number-Counting and Place Value-NC3-Negative Numbers 1';

不解

表:

CREATE TABLE `mymathssowlink` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `ObjectiveID` varchar(13),
  `MyMathsResourceKey` varchar(100),
  PRIMARY KEY (`ID`),
  UNIQUE KEY `idnew_table_UNIQUE` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如何修复:

好吧很奇怪,但我现在已经修复了简化问题!我记得在我的Access时代,尾随空格是比赛的祸根,看起来MySQL在这方面有点繁琐。这样的数据没有问题,但字段MyMathsResourceKey是每行的最后一位数据,因此不以逗号结束。有些行在该列中没有任何数据,因此以逗号而不是MyMathsResourceKey数据终止。我通过在我的csv中添加第三列来修复它,我在其中统一插入了字符串" PLACEHOLDER"。我将其与接收数据的表中名为placeholder的列相匹配。现在,活动(第2列)始终以逗号终止,所有数据似乎都有效。我无法帮助认为这有点奇怪,并且MySQL数据导入真的不想表现得像这样......现在尝试让我的JOIN工作,这一切都是如何开始的! / p>

感谢所有人,尤其是Rahul的帮助。

......现在JOIN工作......

2 个答案:

答案 0 :(得分:1)

完成帖子和评论中的所有修改;我的感觉是,你的列值中有额外的空间,所以你没有得到数据(因为它不匹配确切的字符串)。

所以要么尝试

select * from mymathssowlink
where MyMathsResourceKey 
like '%KS2-Number-Counting and Place Value-NC3-Negative Numbers 1%'; 

(OR)

使用REPLACE()函数删除字段值

中的所有空格
select * from mymathssowlink
where REPLACE(MyMathsResourceKey, ' ', '') 
= 'KS2-Number-Counting and Place Value-NC3-Negative Numbers 1';

如果可以保证空格仅存在于字符串的左/右极端,则也可以使用TRIM()函数。

select * from mymathssowlink
where TRIM(MyMathsResourceKey) 
= 'KS2-Number-Counting and Place Value-NC3-Negative Numbers 1'; 

答案 1 :(得分:0)

您可以尝试Select * from table;,如果有效,请尝试select * from table where key like '%some_text%' 它不是sintax的问题​​,而是查询本身。