当文本类似时,MySQL UPDATE无法正常工作

时间:2014-11-27 11:43:19

标签: mysql

更新:看起来MySQL忽略了查询“媒体服务”上的尾随空格

我有以下代码:

SELECT * from table WHERE company = 'Media Services '

这会带回132行(注意公司名称末尾的空格)。我需要删除此空间,因此我尝试使用以下代码:

UPDATE table SET company = 'Media Services' WHERE company = 'Media Services '

输出为0 rows affected - 试图理解为什么会这样?

任何想法和建议,因为我真的不想手动更改132条记录。

3 个答案:

答案 0 :(得分:1)

不确定但请尝试使用LIKE运算符,而不是

UPDATE table SET company = 'Media Services' 
WHERE company LIKE 'Media Services%'

根据您的最新评论,我强烈猜测公司价值中没有任何尾随空格。当你说where company = 'Media Services '时,它就是这样;它只是忽略尾随空格并为您提供匹配的结果。

基本上,更新永远不会发生,因为实际上没有任何内容可以更新,所以UPDATE0 rows affected

答案 1 :(得分:0)

怎么样:

  

UPDATE表SET公司= RTRIM(公司)

这将删除所有尾随空格 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_rtrim

答案 2 :(得分:0)

如果select返回结果,该函数应该是:

UPDATE table SET company = 'Media Services' WHERE id in (SELECT id from table WHERE company = 'Media Services ') ids ...

当然,如果表格具有唯一的id字段。