2010-05-17 3 views
1

mySQL 데이터베이스에서 괄호 안에있는 텍스트를 제거하는 가장 좋은 SQL 쿼리는 무엇입니까? 텍스트의 괄호의 위치 (시작, 중간, 끝, 무엇이든간에)에 관계없이 작동하는 것을 원합니다. 나는 괄호 안의 텍스트를 지우는 것에 신경 쓰지 않고 그냥 제거한다.괄호 안의 텍스트를 제거하는 SQL 쿼리?

감사합니다.

+0

문자열 (NO 중첩 등)에 존재 SQL 쿼리. – akf

답변

0

MySQL에 정규 표현식 대체 기능이있는 것으로 보이지 않으므로 기존 데이터를 수정하는 가장 쉬운 방법은 외부 응용 프로그램을 사용하는 것입니다. 그런 다음 데이터베이스에 추가하기 전에 모든 새 데이터를 정리하십시오.

$result = $db->query(); 
while($row = $result->next){ 
    $value = preg_replace('/\(.*?\)/', '', $row->value); 
    $db->query('UPDATE ... SET value = ' . $value . ' WHERE id = ' . $row->id); 
} 

참고 : PHP의 정규식 엔진은 게으른 반복 매칭을 지원하는 경우 나는 기억하지 않습니다 (.*?)

+0

이것은 PCRE를 사용하므로'? '를 추가하여 한정어를 비 욕심 많게 만들 수 있습니다. – ThiefMaster

+0

인용 및 mysql_real_escape_string(). – bobince

2

내가 그것을 알아 냈 :

 UPDATE table SET column = CONCAT(SUBSTR(column,1,LOCATE('(', 
    column)-1),SUBSTR(column,LOCATE(')', column)+1)) 
WHERE column LIKE '%(%' AND column LIKE '%)%' 
PHP에서

이것은 제 목적을 위해 작동했지만 다음과 같은 가정을합니다. :

  • 괄호가 제대로 일치
  • 괄호
  • 하나의 쌍은 내가 호출 코드가 데이터 조작의 일을 할 것을 제안하고 떠날 것이다
관련 문제