在mysql中使用WHERE和“=”时无法选择

在mysql中使用WHERE和“=”时无法选择,mysql,Mysql,我在mysql中有一个这样的表,mysql中的数字和单词被选为文本 +---------+----------+ | numbers | words | +---------+----------+ | 1 | help | | 2 | helper | | 3 | helped | +---------+----------+ 没有返回任何结果,我不知道我为什么错了,哪里错了? 在talbe的“帮助”前后都没有空格 SELECT * F

我在mysql中有一个这样的表,mysql中的数字和单词被选为文本

+---------+----------+ | numbers | words | +---------+----------+ | 1 | help | | 2 | helper | | 3 | helped | +---------+----------+ 没有返回任何结果,我不知道我为什么错了,哪里错了? 在talbe的“帮助”前后都没有空格

SELECT * FROM Table AS t WHERE t.words='help'
尝试使用alias,这样它就可以工作了。Table是保留关键字将表的名称更改为其他名称

SELECT * FROM myable AS t WHERE t.words='help
另一种方法是逃跑

SELECT * FROM `Table` WHERE words='help'
但我建议更改表名并使用别名

试试:

SELECT * FROM `Table` WHERE words='help'
或:

尝试使用引号:

SELECT * FROM `Table` WHERE `words` = 'help'

只是问一下显而易见的问题。您确定表中有文本“帮助”吗。如果是,你可以试试

从表中选择*

然后右键单击结果中的“帮助”,复制文本并将其放入查询中

从tableName中选择*,其中words='copied text'


有时,你可能会进入一个额外的空间而没有注意到,或者是偶然发生在我身上。由于您尝试了上述所有答案,但均无效……这可能就是问题所在。希望它能起作用

如果MySQL没有在您的查询中抛出任何错误,那么Table.words很可能包含其他不可打印的字符。尝试执行以下操作:

SELECT t.words, hex(t.words), 'help', hex('help'), hex(t.words) = hex('help')
FROM Table t
WHERE words LIKE '%help%'

它将任何不可打印/不可见的字符(例如空格)编码为十六进制。比较hext.words和hex'help',很可能在t.words的前面或末尾有20个十六进制空格或换行符。

表名是什么?如果是这样,请使用“s”进行转义。您可能忽略了错误消息或没有获取它们。我看到您刚刚编辑了问题以删除所有真实代码的痕迹。您是否收到了错误消息?没有人可以复制您的问题,您必须更具描述性。我使用php从Talbe获取结果$reslt=mysql_querySELECT*,只需参考talename,其中words='help';更好的转义表,因为使用“talbename不是Talbe”,我只是使用Table来引用名称创建别名并不会使Table不再是保留关键字。这就是为什么我说我建议更改表名并使用别名为什么更适合精确匹配?如果使用SELECT*FROM Table,其中包含“help”等词,则结果可能是help、help、helper,我只想返回helplaiqn:不,“帮助”和“帮助”之类的词会给出相同的结果。但是,像“help%”这样的词会给出您提到的结果。阿尔瓦罗·G·维卡里奥:我想你是对的,=总是会快一点。我试过了,但没用,谢谢大家。我找到原因了,在talbe中,“帮助”或“帮助”这个词的末尾有一个新行,我怎么能写出选择的句子或做其他事情?我想精确匹配,不只是像,如果有更简单的方法来解决这个问题如果不需要换行符,我会用updatetable SET words=trimtraining'\n'FROM words替换它
SELECT * FROM `Table` WHERE `words` = 'help'
SELECT t.words, hex(t.words), 'help', hex('help'), hex(t.words) = hex('help')
FROM Table t
WHERE words LIKE '%help%'