a battle with myself

[MySql] TABLE 에서 특정 문자열을 제거한 후 그 문자열을 바로 저장 본문

sql

[MySql] TABLE 에서 특정 문자열을 제거한 후 그 문자열을 바로 저장

열공_중 2017. 2. 10. 16:47


상당한 수의 특정 field 에 동일 한 값을 제거 해야될 일이 생겼다.

"가나다라바사아자차카타파하" 란 문자열이 있을경우

"가나다" 를 제외한 "라바사아자차카타파하" 문자열만 남겨서 다시 저장해야했다.

그래서 알아낸 select SUBSTRING_INDEX(str,delim,count); 함수

특정 문자열에서 검색추가된 문자열을 제거 후 반환한다.

검색후 바로 업데이트 하기 위해  업데이트문을 사용했고

update delete 문에서는 동기화 오류를 피하기 위해 기교값에 같은 table의  from where 문을 사용할 수 없기에

sub query 문을 사용해서 처리했다.





update my_table set

my_str=(select SUBSTRING_INDEX(

(SELECT temp from(SELECT mystr as temp from my_table WHERE my_table__num = "primary key" ) as val), '가나다',-1))

WHERE my_table_num ="primary key";


my_table에서 해당 문자열을 불러온후("가나다라바사아자차카타파하")

"가나다"를 찾아내고 삽입된 count (-1) 만큼 돌아간되 그 이후 값들을 반환받고("라바사아자차카타파하")

my_table 의 my_str에 해당 값을 update 한다.

의외로 종종 쓰인다 ㅎ