2011-12-12 2 views
0

짧은 버전 : 나는MySQL의 발견/시작과 문자열의 마지막 문자를 대체하지만, 문자열이 아닌 중간

[= href가 "HTTP이 변경됩니다 MySQL의 코드가 필요합니다 : // A-랜덤 -을 domain.com "] 하이퍼 [/ HREF]

<로 A HREF ="http://a-random-domain.com "> 하이퍼 </A >

    도메인 부분을 엉망으로하지 않고
  • , 실수로 필드의 텍스트에서 발생할 수] "의 관련이없는 인스턴스를 변환하지 않고
  • .
  • 때마다 도메인이 고유하거나 다를 수 있습니다.

긴 버전 : 새 응용 프로그램과 함께 사용하기 위해 이전 데이터베이스를 마이그레이션하고 있습니다.

이것이 [HREF = "http://somedomain.com"] 하이퍼 [/ HREF] 등의 데이터 및 가능한 다른 갖는 데이터 필드는 : 이전 데이터베이스 콘텐츠 등을 포함하는 텍스트 필드를 갖는다 하이퍼 링크.

표준 HTML로 업데이트해야합니다.

이것은 < A HREF = "http://somedomain.com"> 하이퍼 </A > 많은 데이터 및 가능한 다른 하이퍼 링크 데이터 필드이다.

에서 [HREF를 = 및 [/ HREF]는 충분히

update table set field = replace(field, '[href=', '<a href='); 

교체 사용하여 간단하지만 나는 "에 난처하게 얻을] 고정 A HREF 태그의 닫는 브래킷. 그리고이 데이터베이스에

덕분에 많은?의 다른 인스턴스 "수정해서는 안]은, 그래서 난 그냥에 대체 할 수 없다"

은 MySQL이 정규식 "내다"또는 이러한 목표를 달성하기위한 다른 방법의 일종을 가지고 있는가] !

+2

http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql을 (를) 들여다 볼 수 있습니까? 이것이 한 번에 해결되면 클라이언트 쪽에서 처리하는 것이 좋습니다. 예 : SELECT */UPDATE 각 행에 대한 짧은 Perl 스크립트. 비효율적 일 수도 있지만 이와 같은 간단한 수정에 유용 할 수 있습니다. – BRFennPocock

+0

감사!하이퍼 링크의 일부로 사용되는 경우 ""만 필요합니다 ">와 같은 문자가 나를 위해 제대로 작동하는지 확신 할 수 없습니다. 제공되는 mysql 솔루션이 없다면, 필자는 mysql을 Perl과 같은 스크립트로 처리하는 것을 확실히 추구 할 것이다. 다시 한 번 감사드립니다 – billrichards

+0

"짧은 버전"에서는'[href = "http : //"]가 아니라'[href = "http://a-random-domain.com"] 하이퍼 링크 [/ href] a-random-domain.com "]'? – ruakh

답변

2

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

MySQL은 '평가'용도로만 정규 표현식 기능을 지원합니다. 따라서 데이터를 바꾸거나 조작 할 때 사용할 수 없습니다. 그것을 위해 더 높은 수준의 스크립트 언어를 사용하는 것이 더 좋을 것입니다.

관련 문제