Reputation: 1926
Using mySql alone, I'm trying to replace the word microsoft with microsoft-corp.
I tried using this sql, update names set names = replace(names,'microsoft','microsoft-corp')
, but that replaces each and every microsoft
. Is there a way to get it to replace only the word microsoft?
Original data
"id" "names"
"1" "/microsoft"
"2" "/microsoft/microsoft-word"
"3" "/microsoft/microsoft-word/microsoft-word-tutorials"
"4" "/microsoft/microsoft-word/microsoft-word-tutorials/examples"
"id" "names"
"1" "microsoft >"
"2" "microsoft > microsoft-word"
"3" "microsoft > microsoft-word > microsoft-word-tutorials"
"4" "microsoft > microsoft-word > microsoft-word-tutorials > examples"
Expected correct results
"id" "names"
"1" "/microsoft-corp"
"2" "/microsoft-corp/microsoft-word"
"3" "/microsoft-corp/microsoft-word/microsoft-word-tutorials"
"4" "/microsoft-corp/microsoft-word/microsoft-word-tutorials/examples"
Current incorrect results using my query above
"id" "names"
"1" "/microsoft-corp"
"2" "/microsoft-corp/microsoft-corp-word"
"3" "/microsoft-corp/microsoft-corp-word/microsoft-corp-word-tutorials"
"4" "/microsoft-corp/microsoft-corp-word/microsoft-corp-word-tutorials/examples"
Upvotes: 1
Views: 162
Reputation: 119806
How about:
update names set names = replace(names,'/microsoft/','/microsoft-corp/')
update names set names = '/microsoft-corp' where names = '/microsoft'
update names set names = replace(names,'microsoft >','microsoft-corp >')
Upvotes: 2
Reputation: 7991
I would probably do this in two passes, although you might be able to it in one pass.
update names set names = replace(names,'/microsoft/','/microsoft-corp/');
update names set names = '/microsoft-corp' where names = '/microsoft';
Upvotes: 0