2014-07-10 6 views
0

데이터베이스의 여러 행에있는 URL의 도메인 만 다른 것으로 바꾸어야합니다. 예를 들어 현재 URL은 www.myoldsite.com/index?s=something과 비슷하지만 www.mynewsite.com/index?s=something과 같이 보이도록 도메인 만 바꿔야합니다. 그것은 심지어 MySQL에서 할 수 있습니까?SQL 데이터베이스에서 단어를 바꾸는 방법

나는 어떻게 갱신이 함께 특정 값하지만 그들 중 단지 일부를 갖는 테이블의 모든 행에 대한 전체 값을 설정 알고

UPDATE `mydatabase`.`mytable` SET `mycolumn` = 'http://mynewsite.com/' WHERE `mycolumn` = 'http://myoldsite.com/'; 

내가이 경우에 무엇을 할 수 있습니까?

감사합니다.

답변

2

예. 기능 replace()를 사용

UPDATE mydatabase.mytable 
    SET mycolumn = replace(mycolumn, 'http://myoldsite.com', 'http://mynewsite.com/') 
    WHERE `mycolumn` like 'http://myoldsite.com/%'; 

이전 사이트가 한 번 URL에 이상 나타나는 경우가 완벽하지 않습니다.

는 아마도 더 좋은 방법은 다음과 같습니다

UPDATE mydatabase.mytable 
    SET mycolumn = concat('http://mynewsite.com/', 
          substr(mycolumn, length('http://myoldsite.com/') 
         ) 
    WHERE `mycolumn` like 'http://myoldsite.com/%'; 
+0

감사합니다. –

1

난 당신이

UPDATE MyTable 

SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis') 

WHERE SomeOtherColumn LIKE '%PATTERN%' 
+0

+1 숟가락 먹이없이 좋은 대답 – Noah

0

도메인을 대체 할 REPLACE를 사용해야처럼 뭔가를 찾고 있다고 생각 당신이 일치하는 항목을 발견 한 경우 :

UPDATE mydatabase.mytable 
SET `mycolumn` = REPLACE(mycolumn, 'http://myoldsite.com', 'http://mynewsite.com/') 
WHERE `mycolumn` LIKE 'http://myoldsite.com/%'; -- wildcard on the end 

여기서 WHERE 절은 불필요 할 수 있지만 참조 할 수 있습니다. 당신이 볼 필요가

0

, 관세, 보험료 -> How can I use mySQL replace() to replace strings in multiple records?
그래서, 당신은 문자열을 업데이트 할 수 있습니다 ...

UPDATE mydatabase합니다. mytable SET mycolumn = REPLACE (mycolumn, '이전 URL', '새로운 URL') 여기서 mycolumn = '% OLD_URL %'당신이 목적에 맞게 수정해야합니다

.

관련 문제