我想运行一个简单的mysql命令来更新多行,如下所示:
coursename ="测试高尔夫俱乐部"
需要更新以删除"高尔夫俱乐部" (注意空白) 这样就变成了测试"
这可以在一个命令中完成吗?
答案 0 :(得分:1)
像
这样的东西UPDATE someTable set coursename = 'Test' where coursename = 'Test Golf Club'
会这样做,但它不是很灵活。
使用REPLACE()
和LIKE
将为您提供
UPDATE someTable set coursename = replace(coursename, 'Golf Club', '')
WHERE coursename LIKE '%Golf Club%';
哪个应该找到'高尔夫俱乐部'并用空字符串替换它。 ' WHERE'条款可能是多余的。
答案 1 :(得分:1)
要删除特定列值中出现的所有字符串' Golf Club'
,可以在REPLACE()
语句中使用MySQL UPDATE
函数。
UPDATE mytable SET coursename = REPLACE(coursename,' Golf Club','')
WHERE coursename LIKE '% Golf Club%';
在UPDATE中使用它之前测试SELECT中的表达式是个好主意,例如
SELECT coursename AS old_val
, REPLACE(coursename,' Golf Club','') AS new_val
FROM mytable
WHERE coursename LIKE '% Golf Club%';
然后,您可以验证此表达式是否按预期工作,并且是您要使用的。
(请注意,REPLACE函数替换字符串中的多次出现,而不仅仅是第一次出现。)
答案 2 :(得分:0)
更新TableName设置coursename ='测试',其中coursename ='测试高尔夫俱乐部'
答案 3 :(得分:0)
另一种解决方案
set @str = 'Test Golf Club';
UPDATE someTable set coursename = (select substring(@str,
(locate(' ',@str) + 1),
(length(@str) -
locate(' ',@str)))) where coursename = 'Test Golf Club'