在mysql中编辑值

在mysql中编辑值,mysql,Mysql,我想运行一个简单的mysql命令来更新许多行,如下所示: coursename=“测试高尔夫俱乐部” 需要更新以删除“高尔夫俱乐部”(注意空格) 使之成为“测试” 这可以在一个命令中完成吗?更新TableName set coursename='Test',其中coursename='Test Golf Club'类似 UPDATE someTable set coursename = 'Test' where coursename = 'Test Golf Club' 可以,但不是很灵活 使

我想运行一个简单的mysql命令来更新许多行,如下所示:

coursename=“测试高尔夫俱乐部”

需要更新以删除“高尔夫俱乐部”(注意空格) 使之成为“测试”


这可以在一个命令中完成吗?

更新TableName set coursename='Test',其中coursename='Test Golf Club'

类似

UPDATE someTable set coursename = 'Test' where coursename = 'Test Golf Club'
可以,但不是很灵活

使用
REPLACE()

UPDATE someTable set coursename = replace(coursename, 'Golf Club', '')
  WHERE coursename LIKE '%Golf Club%';

应该找到“高尔夫球杆”并用空字符串替换它。“WHERE”子句可能是多余的。

要删除在特定列的值中出现的字符串“Golf Club”
,可以在
UPDATE
语句中使用MySQL
REPLACE()
函数

UPDATE mytable SET coursename = REPLACE(coursename,' Golf Club','')
 WHERE coursename LIKE '% Golf Club%';
在更新中使用表达式之前,最好先在SELECT中测试该表达式,例如

SELECT coursename                          AS old_val
     , REPLACE(coursename,' Golf Club','') AS new_val
  FROM mytable
 WHERE coursename LIKE '% Golf Club%';
然后,您可以验证此表达式是否按预期工作,以及是否为您想要使用的表达式

(请注意,REPLACE函数将替换字符串中的多个匹配项,而不仅仅是第一个匹配项。)

另一种解决方案

set @str = 'Test Golf Club';

UPDATE someTable set coursename = (select substring(@str,
                 (locate(' ',@str) + 1),
                 (length(@str) -
                        locate(' ',@str)))) where coursename = 'Test Golf Club'

更新`table`SET`coursename`=“Test”,其中`coursename`=“Test Golf Club”?好的,感谢您提供的简单SQL-当然我可以为一行执行此操作。但是,这需要在1000行上运行,这些行都是不同的。测试高尔夫球杆另一个高尔夫球杆不同的高尔夫球杆一个没有那根绳子的最终高尔夫球杆对于混淆,不是一个很清楚的问题。@JamieAbbott,在我的回答中看到另一个替代解决方案。