2017-02-08 2 views
0

열의 모든 필드를 업데이트하려고합니다. 그 중 많은 필드에 원하는 문자열이 있지만이 문자열을 각 필드에만 한 번만 입력하면됩니다. 예 : "MyString의 OtherString MyString의 AnotherString AndAnother MyString의"MySQL : 첫 번째 필드를 제외한 필드의 문자열을 대체하십시오.

"MyString의 OtherString AnotherString AndAnother"

은 당신이 어떤 생각을 가지고 얼마나 이것을 달성하기 위해? "MyString의는"항상 필드에 첫 번째 항 발생할 경우

+0

"MyString"이 필드의 첫 번째 용어가 아닌 경우를 처리하는 더 나은 솔루션이 추가되었습니다. 나는 그것을 좋아하면 좋겠! –

답변

0

이 작동합니다 :

update MyTable set MyField = replace(MyField, ' MyString','') 

위의 핵심은 우리가 선도적 인 공간 "을 MyString"의 발생을 찾아이다 필드의 시작 부분에서 첫 x 째 _ 생은 무시됩니다.

그러나 내 추측에 너무 취약 할 수 있습니다. "MyString"의 첫 번째 항목이 필드의 시작 부분에 없다면 어떻게 될까요? 후자의 경우에

다음이 필요합니다

UPDATE 
    MyTable 
SET 
    MyField = 
    CONCAT(
     LEFT(MyField,INSTR(MyField,'MyString') + LENGTH('MyString')), 
     REPLACE(RIGHT(MyField, LENGTH(MyField) - (INSTR(MyField,'MyString') + LENGTH('MyString'))), 'MyString','') 
    ) 

이 두, 및 "을 MyString"의 첫 번째 항목을 포함한 첫 번째 부분, 두 번째 부분으로 분야를 분할하는 것입니다 무엇을 그것의 모든 발생을 대체합니다.

+0

시간 내 주셔서 감사합니다. 위대한 작품! –

+0

즐거움! . . . –

관련 문제