2012-09-10 2 views
0

모든 숫자, 일부 특수 문자 및 텍스트의 특정 부분을 데이터베이스에서 제거해야합니다. 한 번에 한 문자 씩 제거 할 수있는 스크립트가 있지만 한 번에 모든 문자를 제거하고 싶습니다.여러 개의 대체 문을 번갈아 사용하여 특정 문자를 대체하십시오.

제거해야하는 문자와 텍스트는 다음과 같습니다. Dollar, Sterling, Page, .p, ~,. 다음 숫자 1-9

예를 들어 : 바로 지금이 보이는 항목이 : 이것은 좋은 책, 595 페이지는 단지 $ 54.95

내가 그것을 업데이트해야 595과 비용을 .P 그래서 그것은 다음과 같이 보입니다 : 이것은 훌륭한 책이며, 비용 만입니다.

다음은 내가 사용하는 바꾸기 기능의 코드 스 니펫입니다. 이 스크립트를 나머지 스크립트와 함께 사용하려면이 설정을 사용하고 싶습니다. $ 테이블 이름, $ 필드는 열 이름, $ 검색을 교체해야하고 $ 대체 내가 전체를 게시 할 수 있습니다

if($typeOK) { 
      // CREATE UNIQUE HANDLE FOR update_sql_array 
      $handle = $table.'_'.$field; 
      if($queryType=='replace') { 
       $sql[$handle]['sql'] = 'UPDATE '.$table.' SET '.$field.' = REPLACE('.$field.',\''.$search.'\',\''.$replace.'\')'; 
      } elseif($queryType=='') { 
       $sql[$handle]['sql'] = 'UPDATE '.$table.' SET '.$field.' = REPLACE('.$field.',\''.$keyword1.'\',\''.$replace1.'\')'; 
      } 

(내 경우에는 빈)을 대체 할 수있는 값 값입니다 필요한 경우 스크립트.

여러 번 바꾸려는 문을 사용했지만이 작업을 수행 할 때 첫 번째 문을 무시하고 마지막 대체 문만 실행합니다.

+0

를 사용하여 정규 표현식을. – Kermit

+0

불행히도 나는 할 수 없다. 저는 정규 표현식을 만들 때 5 살짜리 지식을 가지고 있습니다. – Kermit

답변

0

일부 데이터베이스는 TRANSLATE라는 기능을 지원하지만 불행히도 MySQL은 그 중 하나가 아닙니다. 중첩 된 대체로 수행 할 수 있습니다.

set field = replace(replace(replace(. . . (field, '0', ''), '1', '') . . . , '9', '') 

우아하지 않지만 작동합니다.

은 "..."이 다음 순서로 교체하기 위해 추가 통화를 표시하기위한 것입니다 :

set field = replace(field, '0', '') 

set field = replace(replace(field, '0', ''), '1', '') 

set field = replace(replace(replace(field, '0', ''), '1', ''), '2', '') 

. . . 
+0

PHP를 삽입하기 전에 정규 표현식을 사용하는 것이 더 쉽다고 생각합니다. – Kermit

관련 문제