更新:看起来MySQL忽略了查询“媒体服务”上的尾随空格
我有以下代码:
SELECT * from table WHERE company = 'Media Services '
这会带回132行(注意公司名称末尾的空格)。我需要删除此空间,因此我尝试使用以下代码:
UPDATE table SET company = 'Media Services' WHERE company = 'Media Services '
输出为0 rows affected
- 试图理解为什么会这样?
任何想法和建议,因为我真的不想手动更改132条记录。
答案 0 :(得分:1)
不确定但请尝试使用LIKE
运算符,而不是
UPDATE table SET company = 'Media Services'
WHERE company LIKE 'Media Services%'
根据您的最新评论,我强烈猜测公司价值中没有任何尾随空格。当你说where company = 'Media Services '
时,它就是这样;它只是忽略尾随空格并为您提供匹配的结果。
基本上,更新永远不会发生,因为实际上没有任何内容可以更新,所以UPDATE
说0 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
字段。