2014-09-24 3 views
0

DB에서 새로운 문자를 대체하는 DB를 업데이트하려고합니다. 문제는 문자열의 중간에 제거해야하는 문자가 있지만 길이 나 유형을 모르는 것입니다. 때 하위 문자열이 시작하고 끝날 때, exmaple하위 문자열의 중간에서 와일드 카드를 어떻게 사용할 수 있습니까?

my-string=XXXXXXXX-endstring 

정도는 이드 내 - 문자열 값을 알고이

new-string-endstring 

처럼을 좋아하지만,의 하위 문자열을 잘 모릅니다 중간 XXXXX

할 수있는 방법이 있습니까?

감사합니다.

답변

0

당신이 PHP를 사용하는 경우 다음을 수행 할 수 :

1) 열 값 내부의 my-string 텍스트

SELECT * FROM table_name WHERE column_name LIKE '%my-string%'

  • % 행위 등이 모든 행의 SELECT 확인을 와일드 카드

2) 모두 반복 이러한 결과 행은 new_string에 대한 my-string을 대체하기 위해 PHP의 str_replace를 사용하고 DB

+0

안녕하세요, 감사합니다.하지만 내 문자열과 끝 문자열 사이의 문자열을 어떻게 알 수 있습니까? 예제에서 : XXXX, 나는 길이를 모르지만, 하위 문자열을 사용하는 것에 대해 생각했지만 어떻게해야할지 모르겠다. – jpganz18

+0

알려진 문자열 사이의 텍스트를 필터링하려면 PHP의'preg_match()'함수를 호출합니다. 나는 정규 표현식에 대한 전문가가 아니므로 다른 사람이 여기에서 도울 수 있습니까? – Philip

0

당신은 필요한 문자열을 얻고 새로운 캐릭터를 추가 CONCAT를 사용하는 SUBSTRING_INDEX를 사용할 수있는 열의 새 값을 업데이트 할 MySQL의의 UPDATE를 사용합니다.

Update TableA 
Set columnA = CONCAT('newstring' , SUBSTRING_INDEX(columnA, '-', -1)) 
+0

하지만, 예를 들어, 귀하의 예제에서 columnA는 바꿀 문자열입니까? 나는 "찾을 수있을 때까지 3 또는 4 또는 5 자리의 숫자가 될 수있는 다른 짧은 문자열을 더한 columnA (나는 문자열을 알고있다)를 바꾸고 싶다."... 어떻게 이것을 할 생각이 있니? – jpganz18

+0

@ jpganz18, columnA는 XXXXXXXX-endstring을 언급 한 것과 같은 값을가집니다. 끝에서부터 모든 것을 보관하고 newstring을 연결합니다. – radar

관련 문제