을 얻을 수 없습니다 일치가없는 경우 REPLACE
그대로 값을 떠날 것 같은
UPDATE mytable SET mytext = REPLACE(mytext, 'Alphabet ', 'ABC')
작동합니다. 그러나 이는 테이블의 모두 행을 터치하여 일부 값만 대체합니다. 최소한 그다지 효율적이지는 않습니다. 또한 문자열 시작 부분이 아닐지라도 세계의 모든 문자를 Alphabet
으로 바꿉니다. 당신은 참으로 CASE
을 사용할 수,
UPDATE mytable SET mytext = REPLACE(mytext, 'Alphabet ', 'ABC')
WHERE mytext LIKE 'Alphabet %'
문제가 여러 대체 문자열을 지원하기 위해 편집 한 것처럼 http://sqlfiddle.com/#!4/16512/1
를 참조하십시오 : 당신은 더 강력한 뭔가를해야 할 경우
, 당신은 필터를 추가한다 성명 :
UPDATE mytable
SET mytext =
CASE
WHEN (mytext LIKE 'Alphabet %') THEN REPLACE(mytext, 'Alphabet ', 'ABC')
WHEN (mytext LIKE 'Dookickey %') THEN REPLACE(mytext, 'Dookickey ', 'DEF')
WHEN (mytext LIKE 'Goofiness %') THEN REPLACE(mytext, 'Goofiness ', 'GHI')
ELSE mytext
-- ^^^^^^
-- let unchanged
END;
http://sqlfiddle.com/#!4/31531c/1
첫 번째 해결 방법과 마찬가지로 모두 행을 터치합니다. 그리고 이전과 마찬가지로 필터를 사용하여이를 방지 할 수 있습니다. (일치하지 않는 행이 그대로 남아 있기 때문에)이 경우, ELSE
절은 더 이상 필요하지 않습니다 :
UPDATE mytable
SET mytext =
CASE
WHEN (mytext LIKE 'Alphabet %') THEN REPLACE(mytext, 'Alphabet ', 'ABC')
WHEN (mytext LIKE 'Dookickey %') THEN REPLACE(mytext, 'Dookickey ', 'DEF')
WHEN (mytext LIKE 'Goofiness %') THEN REPLACE(mytext, 'Goofiness ', 'GHI')
END
WHERE mytext LIKE 'Alphabet %'
OR mytext LIKE 'Dookickey %'
OR mytext LIKE 'Goofiness %';
이 http://sqlfiddle.com/#!4/44846/1
'UPDATE MYTABLE SET으로 myText (으로 myText 교체 ' 알파벳 ','ABC ')'? –